0

假设我有两个变量:一个包含日期字符串(没有时间),另一个包含相同的日期字符串但时间为 00:00:00,如下所示:

var date1 = '2013-10-23';
var date2 = '2013-10-23 00:00:00';

var date1_time = new Date(date1).getTime();
var date2_time = new Date(date2).getTime()

console.debug('Date 1 time: ' + date1_time + "\n" + 'Date 2 time: ' + date2_time);

控制台中的结果是这样的:

Date 1 time: 1382486400000
Date 2 time: 1382500800000

为什么这两个不等于同一个东西?00:00:00由于我没有设置时间,date1 的时间部分不应该默认为吗?

谢谢

4

2 回答 2

1

我刚刚在chrome上测试了一下,发现

第一个为您提供 00:00:00 UTC 的时间戳

第二个为您提供当前时区的时间戳。

因此,如果您减去它们,您将看到 +-您的时区:

var date1_time = new Date(date1).getTime();
var date2_time = new Date(date2).getTime();

console.log((date2_time-date1_time)/1000/60/60); //will print the timezone difference.
于 2013-09-17T16:56:32.193 回答
0

您可以获得第一个变量正在考虑的确切时间。

var timestamp = 1382486400000;
var date = new Date();
date = new date(timestamp + date.getTimezoneOffset() * 60000)
alert(date);

这一切都是因为默认的 UTC 时区和您当前的时区。

于 2013-09-17T16:57:26.723 回答