我住在印度。因此,我的时区是印度标准时间 (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 产生相同的日期。