JavaScript日期对象总是在美国/纽约时区打印



我有一个从服务器发送的以毫秒为单位的时间戳(Unix时间/来自Epoch的时间),它使用joda时间,并且始终使用恒定时区"America/New_York"。在我的客户端,我也想保证时间按照America/New_York时区显示。我依赖于MDN Date文档,并且认为使用新的Date(milliseconds)构造函数实例化Date对象是最简单的。

现在困难的部分: 我希望能够打印时间的客户使用我的网站以外的美国/纽约时区。我知道我可以从Date object中获取timezoneoffset,所以现在我正在考虑基于偏移量对该对象执行算术,并依赖服务器告诉我是否处于夏令时。使用Joda Time库中的方法。

我想要一个在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);

浏览器没有时区信息。它们只能以UTC和当前操作系统时区显示。甚至不能保证客户端对"America/New_York"时区有任何了解(例如,一个糟糕的,弱的移动设备)。

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

如果你需要在客户端做一些日历计算,你是不幸的…你必须手工做。

顺便说一句,你不能直接使用timezoneOffset,因为它对特定的日期可能不同,DST也很重要。

首先。您想如何处理客户端的日期?

相关内容

  • 没有找到相关文章

最新更新