javascript - 从 Javascript 中的 .NET DateTime JSON 格式字符串获取正确的日期值

标签 javascript .net datetime date dst

我有一个 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/

相关文章:

c# - 从 Visual Studio Online Package Feed 而不是 Unlist 中删除 NuGet 包

javascript - 在多个数组中搜索一个字符串,然后设置一个 var - jQuery

javascript - 我可以运行脚本/扩展来阻止/隐藏 Chrome 页面上的特定内容吗?

javascript - 如何解决 "no method 'appendTo' 错误?

c# - 在返回空 200 响应的 WebAPI 操作方法中抛出 HttpResponseException

c# - 我可以在 EF 6 中将 Fluent API 与注释属性混合使用吗?

python - 将带有年日列的 CSV 数据作为日期时间读入 Pandas

java - 从 JSON 解析日期时间字符串

c - 在 C 中处理时区

javascript - 在 div 中添加 100 个按钮