【问题标题】:jQuery Datepicker setDate showing incorrect datejQuery Datepicker setDate 显示不正确的日期
【发布时间】:2017-04-29 01:07:36
【问题描述】:

日历应该显示 2016 年 10 月 19 日,但一直显示 2016 年 10 月 18 日。我不知道为什么!

$('#datepickerDateReceived').datepicker({
        format: 'yyyy-mm-dd'
}).datepicker(
        'setDate', new Date('2016-10-19')
    );

http://jsfiddle.net/rt3nC/34/

【问题讨论】:

  • 似乎对我有用,在你的 jsFiddle 上
  • 它对我也有好处
  • 对我来说显示的是 2016 年 10 月 18 日。我相信问题取决于当前时间。对我来说是美国东部时间 15:51。如果我将代码更改为'setDate',new Date('2016-10-19 00:00'),它可以正常工作。
  • 问题可能是时区问题。
  • 这是@Barmar 所说的时区问题。尝试以下日期结构。 javascript 似乎在格林威治标准时间 0 午夜创建日期,然后将其调整为等效时区。 new Date('2016-10-19'); >2016 年 10 月 18 日星期二 20:00:00 GMT-0400(东部夏令时间)new Date('2016-10-19 00:00'); >2016 年 10 月 19 日星期三 00:00:00 GMT-0400(东部夏令时间)来自 MDN支持 ISO 8601格式的不同之处在于仅日期字符串(例如“1970-01-01”)被视为 UTC,而不是本地。

标签: javascript jquery datepicker calendar


【解决方案1】:

这在 Safari 中不起作用: $('#datepickerDateReceived').datepicker('setDate', new Date('2016-10-19 00:00'));

我必须这样说才能让它在 Safari 中工作: $('#datepickerDateReceived').datepicker('setDate', new Date('2016-10-19 00:00'.replace(/\s/, 'T')));

【讨论】:

    【解决方案2】:

    问题是日期字符串被解析为 UTC 0,而不是本地时区。 source

    要修复它,只需在日期字符串中添加时间

    $('#datepickerDateReceived').datepicker({
            format: 'yyyy-mm-dd'
    }).datepicker(
            // Initialize the date to be 00:00 local timezone on October 19, 2016
            'setDate', new Date('2016-10-19 00:00')
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多