【问题标题】:Discrepancy between Chrome/Firefox and IE in javascript Date() calculationsjavascript Date() 计算中 Chrome/Firefox 和 IE 之间的差异
【发布时间】:2019-07-19 01:41:03
【问题描述】:

刚刚注意到 IE 为日期的值提供了一个不同的数字,如下所示:

new Date("01 Apr 1940 23:59:59").valueOf()
-938826001000

new Date("31 Mar 1900 00:00:01").valueOf()
-2201302799000

以下是 Chrome 和 Firefox 的相同输出:

new Date("01 Apr 1940 23:59:59").valueOf()
-938826001000
new Date("31 Mar 1900 00:00:01").valueOf()
-2201299199000 

第一个数字在两种情况下都相同,但第二个数字在两种情况下不同。

当我用

对这两个日期之间的小时数进行 datediff 时
trunc((a-b)/3600000)

Internet explorer给出和c#和vb.net一致的图,chrome/ff是一小时出来的。

那么这是 Firefox 和 chrome 中的错误,还是 IE 和 c#/vb 中的错误?还是我错过了什么:)

谢谢

这里有更多不同的例子

new Date("01 Apr 1960 23:59:59").valueOf()  // IE
-307674001000

new Date("01 Apr 1960 23:59:59").valueOf()  // CHROME
-307670401000

我试过 1962,1964,1966,1968,1970,1980 在两个浏览器中都一样,只有 1960 不同。

?new Date("01 Apr 1960 23:59:59").valueOf() + " cr"
"-307670401000 cr" -  DIFFERENT
?new Date("01 Apr 1962 23:59:59").valueOf() + " cr"
"-244602001000 cr"
?new Date("01 Apr 1964 23:59:59").valueOf() + " cr"
"-181443601000 cr"
?new Date("01 Apr 1966 23:59:59").valueOf() + " cr"
"-118371601000 cr"
?new Date("01 Apr 1968 23:59:59").valueOf() + " cr"
"-55213201000 cr"
?new Date("01 Apr 1970 23:59:59").valueOf() + " cr"
"7858799000 cr"

?new Date("01 Apr 1960 23:59:59").valueOf() + " ie"
"-307674001000 ie" -  DIFFERENT
?new Date("01 Apr 1962 23:59:59").valueOf() + " ie"
"-244602001000 ie"
?new Date("01 Apr 1964 23:59:59").valueOf() + " ie"
"-181443601000 ie"
?new Date("01 Apr 1966 23:59:59").valueOf() + " ie"
"-118371601000 ie"
?new Date("01 Apr 1968 23:59:59").valueOf() + " ie"
"-55213201000 ie"
?new Date("01 Apr 1970 23:59:59").valueOf() + " ie"
"7858799000 ie"

【问题讨论】:

  • 没有时区信息的日期时间可能会导致此处出现问题。
  • 谢谢,我会调查并更新

标签: javascript google-chrome datetime internet-explorer-11


【解决方案1】:

您在时区处理方面遇到了差异。如果您提供带有 tz 偏移信息的完全限定日期:

new Date("1900-03-31T00:00:01.000+00:00").valueOf()

实现了一致性。

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

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 2013-03-08
    • 2018-09-09
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多