我有一个 javascript 应用程序,它以 JSON 格式从 ASP.NET WebService 接收数据。我的应用程序对日期进行了大量操作,它也从 WebService 接收到这些日期。
WebService 以 EST 时区存储所有日期并以以下格式发送它们:
{"Date":"\/Date(1319205600000+0300)\/"}
到我的 javascript 应用程序。
在客户端,无论浏览器的时区如何,我都应该在 EST 时区显示所有日期。因此,如果我从服务器接收到以下表示:
10/21/2011 10:00
我应该向用户显示完全相同的时间。
所以为了转换日期,我做了这样的事情:
function convert_date(millisec) {
var date = new Date(millisec),
local_offset = date.getTimezoneOffset(),
server_offset = -5 * 60, //EST offset
diff = (local_offset + server_offset) * 60000;
return new Date(millisec + diff);
}
但要点是 server_offset
并不总是应该是 -5。它可以是 -4,具体取决于 DST 值。我尝试使用 server_offset = (date.isDST() ? -4 : -5) * 60
但我还没有找到任何捕获 isDST()
的解决方案> 这适用于所有本地客户端时区。它们中的大多数适用于本地浏览器的时区,该时区的 DST 值与 EST 时区相同,但在 GMT+5:30 时区的情况下会失败。
那么有什么方法可以从 javascript 确定 DST 是否适用于 EST 时区中的某个特定日期?
或者我错过了什么?
最佳答案
如果您可以修改 Web 服务,我希望它也返回一个标志,指示它是否是服务器时区 (EST) 中的夏令时。
假设你做不到,你可以根据DST in the United States的这个信息判断是否是夏令时:
DST starts on the second Sunday of March and it ends on the first Sunday of November.
需要注意的是,这在未来可能会发生变化(我什至不知道它在 2007 年发生了变化)。
关于javascript - 从 Javascript 中的 .NET DateTime JSON 格式字符串获取正确的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697300/