javascript getTime()和Java getTime(()之间的区别
Difference between javascript getTime() and Java getTime()
Java和JavaScript似乎对负毫秒值给出了不同的结果。
JAVA:
System.out.println(new Date(-12220000000000L));
Wed Sep 26 12:33:20 MST 1582
JavaScript:
console.log(new Date(-12220000000000));
Date {Wed Oct 06 1582 12:33:20 GMT-0700 (LMT)}
他们的产出相差10天。但对于某些值,差异小于10天。我使用W3C TryIt编辑器来测试JavaScript输出。我不知道偏差到底从哪里开始。我是不是做错了什么?
Java的GregorianCalendar class中从儒略历切换到格里高利历的默认日期"是1582年10月15日(格里高利)。在此之前,日期将在儒略历中。"
因此,OP的Java日期1582年9月26日是儒略历。1582年的儒略历和格里高利历相差10天。
如果有问题的JavaScript实现不尊重儒略到格里高利的切换,而是使用格里高利日期,而不管我们所处的时间点是OP所经历的情况。
使用nashorn,您可以看到它们何时偏离:
> 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没有。
java getTime()
和javascript
getTime()
都返回自1970年1月1日00:00:00 GMT以来经过的许多毫秒。负参数计算过去的日期。
我在jdk中发现了一个bug。读到这篇文章,在jdk 7中,从1582年10月5日到1582年十月15日似乎缺少10天。我认为与javascript
getTime()
的10天差异来自于这个错误。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在ember/handlers中使用value和valueBinding有什么区别
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- 使用大括号和不使用bracs调用函数的区别
- webpack开发模式和生产构建模式之间有什么区别
- 使用Rhino和ASE执行Javascript的区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- javascript getTime()和Java getTime(()之间的区别
- Date.parse() 和 .getTime() 之间的区别