从Javascript中的.net DateTime JSON格式字符串中获取正确的日期值
Get correct date value from .NET DateTime JSON format string in Javascript
我有一个javascript应用程序,从ASP接收数据。. NET WebService的JSON格式。我的应用程序有很多操作日期,它也从WebService接收。
WebService以EST时区存储所有日期,并以以下格式发送:
{"Date":"'/Date(1319205600000+0300)'/"}
到我的javascript应用程序
在客户端,我应该在EST时区显示所有日期,而不管浏览器的时区。如果我从服务器接收到:
2011年10月21日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。我试图做server_offset = (date.isDST() ? -4 : -5) * 60
代替,但我还没有找到捕获isDST()
的任何解决方案,它适用于所有本地客户端时区。他们中的大多数工作良好的本地浏览器的时区,DST与EST时区相同的值,但会失败的情况下,例如GMT+5:30时区。
所以有任何方法来确定是否DST将适用于某些特定日期在EST时区从javascript?
也许我错过了什么?
如果你可以修改web服务,我也会让它返回一个标志,表明它是否在服务器的时区(EST)中是夏令时。
假设您不能这样做,您可以根据美国夏令时的以下信息确定是否为夏令时:
夏时制从3月的第二个星期日开始,到11月的第一个星期日结束。
需要注意的是,这在未来可能会改变(我甚至不知道它在2007年已经改变了)。
我真的不确定你是如何得到你传递给函数的ticks
值,我认为你有一些奇怪的事情发生在那里。但是,如果问题是如何编写isDST()
函数,那么这应该是相当简单的。
Date.prototype.isDST = function()
{
var dt = new Date(this.getYear(), 1, 1);
return dt.getTimezoneOffset() > this.getTimezoneOffset();
}
相关文章:
- 如何从Angularjs中的新日期获取日期格式
- PhoneGap 2.0(Cordova)DatePicker插件'模式'-属性以获取日期和时间
- 获取日期和货币格式
- 如何从区域设置获取日期格式
- 如何使用TCPDF在可编辑PDF中获取日期选择器
- jQuery日期时间选择器-如何在javascript中获取日期
- 从另一个日期选择器中选择另一个值后,获取日期选择器的起始值
- 如何使用moment.js获取日期和时间
- 如何在日期选择器中的单独变量中获取日期月份和日期
- 需要减少用于获取日期格式的javascript方法代码
- 日期选取器单击事件获取日期
- 无法从日期对象javascript获取日期和月份
- 从getTime()类型的日期获取日期和时间,以显示mySQL数据库中的日期
- 如何使用javascript在unix时间戳中获取日期
- 如何从couchdb获取日期
- Angular从datetimepicker获取日期
- 如何在javascript中从日期函数中获取日期
- 只获取日期的时间戳,反之亦然
- 如何在javascript中根据周数、工作日和年份获取日期
- 如何在javaScript中获取日期和时间