在JavaScript中,所有日期都存储为UTC.也就是说,返回的序列号date.valueOf()
是自1970-01-01 00:00:00 UTC以来的毫秒数.但是,当您通过.toString()
或.getHours()
等检查日期时,您将获得当地时间的值.也就是说,系统运行脚本的本地时间.您可以使用.toUTCString()
或.getUTCHours()
等等方法获取UTC中的值.
所以,你不能在任意时区得到一个日期,它都是UTC(或本地).但是,当然,如果您知道UTC偏移,您可以在任何您喜欢的时区获得日期的字符串表示.最简单的方法是从日期和通话中减去UTC偏移量,.getUTCHours()
或者根据需要减去.toUTCString()
:
var d = new Date(); d.setMinutes(d.getMinutes() - 480); // get pacific standard time d.toUTCString(); // returns "Fri, 9 Dec 2011 12:56:53 UTC"
当然,如果你使用的话,最后你需要忽略"UTC" .toUTCString()
.你可以去:
d.toUTCString().replace(/UTC$/, "PST");
编辑:不要担心时区何时重叠日期边界.如果您传递setHours()
一个负数,它将从昨天的午夜减去这些小时数.例如:
var d = new Date(2011, 11, 10, 15); // d represents Dec 10, 2011 at 3pm local time d.setHours(-1); // d represents Dec 9, 2011 at 11pm local time d.setHours(-24); // d represents Dec 8, 2011 at 12am local time d.setHours(52); // d represents Dec 10, 2011 at 4am local time