jquery - 有人可以解释为什么在 jQuery UI Datepicker 中会出现这样的情况吗?

标签 jquery date datepicker

此方法位于 line 1380 in the jQuery ui datepicker :

_daylightSavingAdjust: function(date) {
    if (!date) {
      return null;
    }
    date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
    return date;
}

它在日期选择器代码中的许多地方使用。据我所知,这段代码只会向任何时间 > 12 的日期添加 2 小时,否则将时间设置为 0。

我在控制台中尝试过:

date = new Date();
console.log("" + date);
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
console.log("" + date);

我得到了:

Tue Dec 06 2011 18:36:06 GMT+0100 (CET)
Tue Dec 06 2011 20:36:06 GMT+0100 (CET)

最佳答案

这个评论确实有点神秘:

/* Handle switch to/from daylight saving.
   Hours may be non-zero on daylight saving cut-over:
   > 12 when midnight changeover, but then cannot generate
   midnight datetime, so jump to 1AM, otherwise reset.
   @param  date  (Date) the date to check
   @return  (Date) the corrected date */

日期选择器根据所选日期在内部创建日期对象,而不指定时间 - 因此使用午夜。在某些地区,夏令时在午夜开始,这会将时间拨回到前一天的晚上 11 点。

因此,该函数查看 Date 对象的小时,以确定是否必须将时间向前推进两个小时才能获得正确的日期。

关于jquery - 有人可以解释为什么在 jQuery UI Datepicker 中会出现这样的情况吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404216/

相关文章:

javascript - 是否可以在上传前同时验证文件大小和扩展名?

swift - 从 UTC 转换为本地时区会给出错误的结果

javascript - 如何在选择 future 日期时禁用 html 日期输入类型?

twitter-bootstrap - minDate 在 Bootstrap 日期选择器中不起作用

javascript - 输入谷歌地图方向

jquery - 复选框 : how to display elsewhere? 的验证规则

javascript - 初学者 : How to remove a node that contains a specific class using JavaScript

PHP AJAX MySQL 表单中的插入日期输入为 : 12/31/1969

r - apply.monthly 给出该月最后一次观察的日期,而不是该月的最后一天

javascript - 根据需要将 Pikaday Datepicker 库附加到文本字段并一键显示全部内容?