JS以UTC时间获取日期

时间:2013-07-11 14:49:35

标签: javascript date timezone

我在JS中创建了一个日期:

var myDate = new Date('2013-01-01 00:00:00');

我假设JS以UTC时间读取此内容。但是,当我执行类似myDate.getTime()的操作时,返回的时间戳就像格林尼治标准时间凌晨4点。

这是为什么?如何将日期作为UTC时间的午夜?

4 个答案:

答案 0 :(得分:2)

至少在Chrome中,这有效:

var myDate = new Date('2013-01-01 00:00:00 UTC');

如果您放置GMT而不是UTC,它也会有效。但我不知道这是否足够跨浏览器。

答案 1 :(得分:2)

我住在印度。因此,我的时区是印度标准时间(IST),它在tz数据库中列为Asia/Kolkata。印度比格林威治标准时间早5小时30分钟。因此,当我执行new Date("2013-01-01 00:00:00")时,GMT的实际时间为"2012-12-31 18:30:00"

我相信你住在美国是因为你在美国东部时间(GMT-04:00)?我是对的吗?

如果您想在GMT而不是当地时区解析时间,请执行以下操作:

new Date("2013-01-01T00:00:00+00:00");

注意日期和时间之间的大写T,以及最后的+00:00。这是用于解析特定时区内给定时间的格式。


给定日期字符串"2013-01-01 00:00:00",您可以使用以下函数将其转换为所需格式:

function formatDateString(string, timezone) {
    return string.replace(" ", "T") + timezone;
}

然后您可以按如下方式创建日期:

new Date(formatDateString("2013-01-01 00:00:00", "+00:00"));

将本地时间转换为GMT的另一种方法如下:

var timezone = new Date("1970-01-01 00:00:00"); // this is the start of unix time

现在您可以将自己的本地时区作为日期对象:

new Date(new Date("2013-01-01 00:00:00") - timezone);

以上所有方法在格林威治标准时间生成相同的日期。

答案 2 :(得分:0)

JS使用计算机使用的时区读取此内容。

您可以尝试使用myDate.toUTCString()获取UTC时间的日期。

如果您想使用时间戳myDate.getTime()

答案 3 :(得分:-1)

我的工作就是这样做

var datetime= new Date()

然而,月份为1,所以你必须添加一个