4

I've created a date in JS like so:

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

I assume JS reads this in as UTC time. But when I do something like myDate.getTime() the timestamp returned was something like 4AM GMT time.

Why is this? And how do I get the date as midnight in UTC time?

4

4 回答 4

2

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

我相信你住在美国是因为你在 EST 时区 (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);

所有上述方法在 GMT 产生相同的日期。

于 2013-07-11T15:15:22.580 回答
2

至少在 Chrome 中,这是有效的:

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

如果你把GMT而不是UTC. 但我不知道这是否足够跨浏览器。

于 2013-07-11T15:14:48.380 回答
0

JS 使用您的计算机使用的时区来读取它。

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

如果你想得到时间戳使用myDate.getTime()

于 2013-07-11T15:00:33.967 回答
-1

我的作品只需这样做

var datetime= new Date()

但是月份是 1 低,所以你必须添加一个

于 2017-09-07T21:52:53.503 回答