Chrome/Firefox 和 IE 在 javascript Date() 计算中的差异
Discrepancy between Chrome/Firefox and IE in javascript Date() calculations
刚刚注意到 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"
您 运行 时区处理的差异。如果您提供带有 tz 偏移信息的完全限定日期:
new Date("1900-03-31T00:00:01.000+00:00").valueOf()
实现了一致性。
刚刚注意到 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"
您 运行 时区处理的差异。如果您提供带有 tz 偏移信息的完全限定日期:
new Date("1900-03-31T00:00:01.000+00:00").valueOf()
实现了一致性。