首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript getTime()和Java getTime()的区别

javascript getTime()和Java getTime()的区别
EN

Stack Overflow用户
提问于 2015-03-21 22:15:43
回答 3查看 1.7K关注 0票数 2

似乎Java和JavaScript对于负毫秒值给出了不同的结果。

爪哇:

代码语言:javascript
运行
复制
System.out.println(new Date(-12220000000000L));
Wed Sep 26 12:33:20 MST 1582

JavaScript:

代码语言:javascript
运行
复制
console.log(new Date(-12220000000000));
 Date {Wed Oct 06 1582 12:33:20 GMT-0700 (LMT)}

它们的产出有10天的差异。但对于某些数值,差别小于10天。我使用W3C TryIt编辑器测试JavaScript输出。我不知道偏差是从哪里开始的。我在这里做错什么了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-22 00:04:47

使用纳什霍恩,你可以看到当他们偏离:

代码语言:javascript
运行
复制
> function printDate(x) { System.out.println(new Date(x) + " - " + new java.util.Date(x)); }

> printDate(-12219292800000)
Fri Oct 15 1582 00:00:00 GMT+0000 (GMT) - Fri Oct 15 00:00:00 GMT 1582

> printDate(-12219292800001)
Thu Oct 14 1582 23:59:59 GMT+0000 (GMT) - Thu Oct 04 23:59:59 GMT 1582

这对应于来自朱利安至公历的开关。

Java的日期库考虑到了这一变化,但JavaScript没有。

票数 1
EN

Stack Overflow用户

发布于 2015-03-22 00:27:10

在Java的朱利安http://docs.oracle.com/javase/8/docs/api/java/util/GregorianCalendar.html#setGregorianChange-java.util.Date-中从格里高利GregorianCalendar日历切换的默认日期

因此,OP的Java日期为9月26日,1582年是朱利安日期。朱利安和格里高利在1582年的日子的区别是10天

如果问题中的JavaScript实现不尊重朱利安到格里高利的切换,而是与格里高利日期一起工作,那么无论时间的什么时候,我们都处于OP所经历的情况。

票数 3
EN

Stack Overflow用户

发布于 2015-03-21 22:46:05

自1970年1月1日格林尼治时间00:00以来,java getTime()javascript getTime()都返回了许多毫秒。否定参数计算日期到过去。

我找到了一个jdk中的bug。在jdk 7中,从、10月5日到1582年10月15日到1582年10月15日,似乎缺少10天的时间。我认为与javascript getTime() 10天的区别来自于这个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29188685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档