我有一些有趣的问题,但找不到解决方案。看看这个:
var d1 = new Date("07 31 2014");
document.write(d1);
document.write('<br />');
var d2 = new Date(1406746800 * 1000);
document.write(d2);
当我运行这个脚本时,我得到了这个结果:
Thu Jul 31 2014 00:00:00 GMT+0500 (UZT)
Thu Jul 31 2014 00:00:00 GMT+0500 (UZT)
然后在我更改时区后得到以下结果:
Thu Jul 31 2014 00:00:00 GMT-0800 (AKDT)
Wed Jul 30 2014 11:00:00 GMT-0800 (AKDT)
如您所见,第二个结果是 7 月 30 日,但第一个结果是 7 月 31 日。我认为它们都必须等于 7 月 31 日。我知道这个问题取决于时区,但有解决方案吗?
最佳答案
所以构造函数的参数是:
an Integer value representing the number of milliseconds since 1 January 1970 00:00:00 UTC
给定你的整数值,它代表(对我来说,在 BST 中):
Wed Jul 30 2014 20:00:00 GMT+0100
这是
Wed Jul 30 2014 19:00:00 UTC
你的时区是 GMT-8,所以上面的 -8 给出了:
Wed Jul 30 2014 11:00:00 GMT-0800 AKDT
日期字符串 构造函数以您本地的时区构造日期。您可以通过执行以下操作查看值应该是什么:
new Date("07 31 2014").getTime() / 1000
返回 1406761200
,而不是 1406746800
关于Javascript 与日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031083/