如何使JavaScript New Date()函数在不同的时区显示相同?

时间:2013-05-11 03:04:00

标签: javascript timezone

我正在为我的网络应用构建一个时间轴,我正在使用以下方法操作添加到时间轴的元素:

var time_going = new Date(data2.time_going * 1000),
    time_going_hour = time_going.getHours(),
    time_going_minutes = time_going.getMinutes(),
    left_position = (time_going_hour * width_by_hour) + (time_going_minutes * width_by_minute);

问题是left_position因您当前的时区而异,因为新的日期函数返回不同的信息。无论如何都要强迫时间始终与纽约时间保持一致吗?

data2.time_going在Unix时间戳中,例如设置为1368687333。

1 个答案:

答案 0 :(得分:2)

正如您可能已经知道的那样,UNIX“Epoch”时代没有时区。这使得处理UNIX时间戳变得容易,因为您永远不必跟踪它们所处的时区。

同样,JavaScript Date对象与时区无关。当您调用getHours()时,该方法正在为当前计算机的时区执行时间偏移数学运算。

因此,您最好不要总是使用纽约时间,而是最好使用UTC时区进行数学运算。换句话说,请尝试使用getHours()getMinutes(),而不是使用与语言环境相关的getUTCHours()getUTCMinutes()。只要您使用UNIX纪元时间初始化Date对象,这些方法将始终返回相同的值,无论它们运行的​​机器的时区如何。