Jquery datepicker 和 php datetime 不同意?

Posted

技术标签:

【中文标题】Jquery datepicker 和 php datetime 不同意?【英文标题】:Jquery datepicker and php datetime don't agree? 【发布时间】:2019-03-08 09:34:29 【问题描述】:

我正在尝试做一些看起来应该很简单的事情,但不知何故无法正确绑定。

用户从jquery datepicker 中选择一个日期,我在其中启用了showWeek

$(".datepicker").datepicker(
    showWeek: true,
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd'
);

但是,当将生成的日期字符串输入 php 日期时间时,星期不对应,并且是 1 周后的未来。

$start_date = isset($_POST['startdate']) ? $_POST['startdate'] : "";
$start = new DateTime($start_date);
echo $start->format("W"); 

IE,2018-10-02 在我的日期选择器中显示为第 39 周,但上面从将该日期读回日期时间并格式化为周返回第 40 周的回声。

所以,据我所知,jquery datepicker 和 php datetime 类在默认情况下不同意哪个星期。

有没有办法解决这个问题?

PHP date 表示它符合 ISO-8601,Checking online 为我确认 php 正确,那么如何修复 datepicker 以正确显示?

【问题讨论】:

你使用什么日期选择器,因为那里有很多库 嘿,日期选择器文档 (calculateWeek) 也声称使用 ISO-8601。我认为 datepicker 存在错误。 @sigma 我添加了一个链接,我使用的是标准的 jquery datepicker 小部件 【参考方案1】:

好的,这是解决方案:根据 jquery ui,您需要指定第一天,而在您的代码中您缺少它:

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Show week of the year</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() 
    $( "#datepicker" ).datepicker(
      showWeek: true,
      firstDay: 1,
      changeMonth: true,
      changeYear: true,
      dateFormat: 'yy-mm-dd'
    );
   );
  </script>
</head>
<body>
 
<p>Date: <input type="text" id="datepicker"></p>
 
 
</body>

只需添加 firstDay: 1,一切都会如您所愿。

【讨论】:

漂亮,谢谢。试图理解它为什么会起作用......它将连续显示的第一天设置为星期一,而默认值为星期日。该行显示该行第一天的周数,因此存在差异?我很惊讶 jQuery 没有默认为星期一来避免这个问题! 根据文档和api,您必须设置一周的第一天。星期日为 0,星期一为 1,等等。看看这里:api.jqueryui.com/datepicker/#option-firstDay,这是 jquery 官方页面的解释:datepicker 可以显示一年中的第几周。默认计算遵循 ISO 8601 定义:一周从星期一开始,一年中的第一周包含一年中的第一个星期四。这意味着一年中的某些日子可能会被放入“属于”另一年的几周。看起来很复杂,但最后有一个很好的逻辑:)

以上是关于Jquery datepicker 和 php datetime 不同意?的主要内容,如果未能解决你的问题,请参考以下文章

php Multidatepicker Datepicker jquery UI

默认将 PHP 变量解析为 Jquery UI Datepicker

使用 Jquery Datepicker 进行 PHP MYSQL 日期范围搜索

PHP 将PHP date()样式dateFormat转换为等效的jQuery UI datepicker字符串

当我在 ajax 中传递 jquery datepicker 日期时,php 发现索引错误

jquery-ui datepicker php+mysql 问题