Bootstrap-weekpicker 插件在表单中发布日期格式

Posted

技术标签:

【中文标题】Bootstrap-weekpicker 插件在表单中发布日期格式【英文标题】:Bootstrap-weekpicker plugin post date format in form 【发布时间】:2021-11-29 05:08:36 【问题描述】:

我是编码新手,很抱歉我的问题很简单。

我正在使用插件 Week-Picker-Bootstrap-4。我允许我打开一个呼叫者并选择一个星期。 bootstrap-weekpicker.min.js 在选择日期Week 41, 2021 后创建一个带有以下输出的html 输入表单。这对我来说没问题,但我需要使用 post 将此值发送到我的服务器。但现在它将发布Week 41, 2021。有没有办法保持值Week 41, 2021 存在以供用户查看,但以这种格式format :'yyyy-mm-dd' 将原始选定日期作为值发布到我的服务器?我找不到有关如何执行此操作的答案。

              <div class="row">            
    <div class="col-xs-12 col-md-12">Week / Year</div>
    <div class="col-xs-12 col-md-12">
<div class="col-auto">
<div class="input-group date align-items-center">
                   
          <div class="input-group date align-items-center">
                 <div id="planning_weekpick"></div>
   </div></div>
    </div></div>
   
      </div>
//Bootstrap css and jquery are inlcuded to.
<link rel="stylesheet" href="https://cdn.rawgit.com/pingcheng/bootstrap4-datetimepicker/master/build/css/bootstrap-datetimepicker.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js" type="text/javascript"></script>
      <script src="https://cdn.rawgit.com/pingcheng/bootstrap4-datetimepicker/master/build/js/bootstrap-datetimepicker.min.js" type="text/javascript" ></script>
      <script src="../js/bootstrap-weekpicker.min.js" type="text/javascript" ></script>
          <script type="text/javascript">
          $(function () 

  $('#planning_weekpick').weekpicker();

);

       
    </script>     

【问题讨论】:

【参考方案1】:

我认为您可以使用this 解决方案。是setISODate函数。

$date = new DateTime();
$date->setISODate($year, $weekNumber);
echo $date->format('Y.m.d');

有几种方法可以从Week 41, 2021 字符串中提取年份和周数。

例如:

$dateString = 'Week 41, 2021';
$parts = explode(' ', $dateString);
$weekNumber = (int) rtrim($parts[1], ',');
$year = (int) $parts[2];

更新:

我可以建议另一种方法来编写您的 normalizeMonth 函数:

function normalizeMonth(int $monthNumber) 
  $months = ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'];

  return $months[$monthNumber - 1]; // -1 because array indexes start with 0.

【讨论】:

感谢您的反应。问题是这种格式没有月份。这就是为什么我正在寻找一种将帖子值设为原始日期的方法。从那里我可以使用 php 提取月、周、日和年。 因此,在 php 中从“2021 年第 41 周”获取月、年、日、周值的方法也是我的答案。但我只看到从中获取星期和年份的方法,我知道如何从 php 中的原始日期 yyyy-mm-dd 获取所有内容。【参考方案2】:

感谢@shanginn 的代码和文档建议。我能够创建以下代码来获得我需要的东西!非常感谢!

$dateString = $planning_week;
$parts = explode(' ', $dateString);
$weekNumber = (int) rtrim($parts[1], ',');
$year = (int) $parts[2];
$weekyear = $weekNumber. '-' . $year;

$date = new DateTime();
$date->setISODate($year, $weekNumber);
$createddate = $date->format('Y-m-d');
$dateplanning = new DateTime($createddate);
$monthnumber = $dateplanning->format("m");
$yearandmonth = $year . '-' . $monthnumber;

function normalizeMonth($monthnumber) 
    switch($monthnumber) 
        case "01": return "Januari";
        case "02": return "Februari";
        case "03": return "Maart";
        case "04": return "April";
        case "05": return "Mei";
        case "06": return "Juni";
        case "07": return "Juli";
        case "08": return "Augustus";
        case "09": return "September";
        case "10": return "Oktober";
        case "11": return "November";
        case "12": return "December";
        
    
    
    return $monthnumber;

$month = normalizeMonth($monthnumber);

【讨论】:

最好将变量命名为camelCase 或snake_case 以提高可读性。还有另一种写函数 normalizeMonth() 的方法,请检查我的答案,我会用函数更新它。 感谢您的提示!您制作的月份函数,是只返回有问题的月份还是返回所有月份?我只需要将当前发布的月份转换为 tekst 版本。 它只会返回当前月份。请查看array documentation 以更好地了解该功能:) 好的,很好!你能解释一下为什么以你的方式编写函数更好吗? 我没有说它更好。但总的来说,如果您可以避免ifs 或switches,您应该这样做。它更容易理解并且工作更快。而且更短。但我的函数依赖于 $monthNumber 介于 1 和 12 之间这一事实,如果您使用 -&gt;format('m'),这是正确的,但并非总是如此。

以上是关于Bootstrap-weekpicker 插件在表单中发布日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在表行中使用引导程序 x-editable?

Jquery datatable 在从简单的 Web 服务调用 Web 方法时未在表中显示任何数据

IDEA FreeMyBatis插件上手

在 HTML 表格中显示 SqlDataSource 数据(DataTables 插件)

WordPress——统计所有用户的帖子

我试图在表中插入数据,但数据未存储在表中[重复]