-1

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

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 Timestamp 中,例如设置为 1368687333。

4

1 回答 1

2

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

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

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

于 2013-05-11T03:59:40.930 回答