我在JS中创建了一个日期:
var myDate = new Date('2013-01-01 00:00:00');
我假设JS以UTC时间读取此内容。但是,当我执行类似myDate.getTime()的操作时,返回的时间戳就像格林尼治标准时间凌晨4点。
这是为什么?如何将日期作为UTC时间的午夜?
答案 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,所以你必须添加一个