【问题标题】:Javascript new Date decreases date by a dayJavascript new Date 将日期减少一天
【发布时间】:2016-01-12 20:55:05
【问题描述】:

我有一个使用 AngularJS 读取日期的场景。有趣的是,它会将我的日期值减一。

为什么会这样?

new Date("2016-01-06T00:00:00")
give me result as 
Tue Jan 05 2016 16:00:00 GMT-0800 (Pacific Standard Time)

【问题讨论】:

  • 很简单 ...第一个日期字符串是 UTC,您的时区偏移量从午夜开始需要 8 小时
  • 如上所述,您需要根据您的时区进行调整
  • 简单的解决方案,您需要搬家、搬家,并在伦敦找到工作。那么就不会有问题了:)

标签: javascript angularjs date


【解决方案1】:

这是因为当您在 JavaScript 中使用 new Date() 时,它会转换并打印浏览器时区中的日期。

所以如果你打印:

new Date("2016-01-06T00:00:00-0800")

您将获得所需的实际输出,因为您的时区(由浏览器确定)和 UTC 时间之间存在-0800 差异。

【讨论】:

    【解决方案2】:

    UTC 时区用于解释不包含时区信息的 ISO 8601 格式的参数(请注意,ECMAScript 2015 指定将不带时区的日期时间字符串视为本地时间,而不是 UTC)。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

    由于您的日期字符串似乎缺少一个,JS 假定它是 UTC 时间。您看到的结果是同一时间,偏移到您的时区。您需要做的就是为您正在解析的字符串提供时区数据。

    【讨论】:

      【解决方案3】:

      这是因为日期考虑了您浏览器的时区,在您的情况下是 PST。在 EST 中对我也是如此:

      test = new Date("2016-01-06T00:00:00")
      

      2016 年 1 月 5 日星期二 19:00:00 GMT-0500(美国东部标准时间)

      您仍然可以使用任何 .getUTC* 函数获取 UTC 时间,如下所示:

      test.getUTCDate();
      

      6

      【讨论】:

        猜你喜欢
        • 2018-07-29
        • 1970-01-01
        • 2014-12-18
        • 1970-01-01
        • 2019-08-24
        • 2017-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多