JavaScript Date对象始终以America / New_York时区打印?

时间:2011-09-22 16:23:02

标签: java javascript timezone jackson jodatime

我有一个从我的服务器发送的时间戳(以毫秒为单位Unix time / time from Epoch),它使用Joda-time和始终为“ America / New_York ”的恒定时区。在我的客户端,我还想保证根据 America / New_York 时区显示时间。我依赖于MDN Date documentation,并且已经决定使用新的Date(毫秒)构造函数来实例化我的Date对象是最简单的。

现在困难的部分: 我希望能够为在America / New_York时区之外使用我的网站的客户打印时间。我知道我可以从Date object getTimezoneOffset,所以现在我正在考虑根据偏移量对该对象进行算术运算,并依靠服务器告诉我是否在DST中。使用this method from the Joda Time library

我想要一个适用于IE8以及现代浏览器的解决方案。有什么想法吗?是否有任何小型实用程序已经以标准方式实现了这一目标?

// dateTimeAsString is sent from the server (via JSON) as a String
// dateTimeAsString example: "1311387300000"
var dateTimeAsInt = parseInt(dateTimeAsString,10);
var dateTimeInNY = new Date(dateTimeAsInt);

// My current offset is 240
var nyOffset = dateTimeInNY.getTimezoneOffset();

// Somewhere out west
var dateTimeInTexas = new Date(dateTimeAsInt);


var isDST = false; // sent from server


// What I want to do, this is not legal JavaScript
dateTimeInTexas.printWithOffset(isDST,nyOffset);

1 个答案:

答案 0 :(得分:2)

浏览器没有时区信息。它们只能以UTC和当前OS时区显示。即使不能保证客户对“America / New_York”时区有任何了解(例如,可怜的弱电子设备)。

如果您希望在特定时区显示日期,最简单的方法是将其转换为格式化字符串并将其作为字符串传输,而不是毫秒。

如果您需要在客户端进行一些日历计算,那么您运气不好......您必须手动完成。

顺便说一句,你不能按原样使用timezoneOffset,因为它对于特定的日期可能会有所不同,DST也很重要。

所以,首先。您想在客户端使用日期做什么?