防止JsonResult自动格式化日期

时间:2012-07-06 21:52:57

标签: asp.net-mvc json datetime azure cloud

我正在编写一个基于云的程序,该程序利用UTC将日期保存到服务器,并在往返时将其转换回来。问题是,我在云中的实例是根据获取结果的浏览器上的本地化设置自动转换JsonResult日期时间值。

我已经完成了大量的步骤,以确保两个级别上的服务器端代码都返回正确的数据,并且它位于所有实例上,并且我的页面上的任何Javascript代码都没有进行更改(甚至删除了所有Javascript日期格式化以防万一),我已经跟踪Firebug以确定它改变的确切点,就是我的页面从我的JsonResult方法接收Json结果。就像我说的那样,我在发送到页面之前调试了这些值,它们是正确的,并且根据我的响应,它们会根据浏览器位置进行修改....

有没有人有类似的问题?

返回值:日期(1341792000000)07/08/2012 17:00

应该是:日期(1341817200000)(07/09/2012 12:00 AM)

由于

3 个答案:

答案 0 :(得分:1)

我最终得到了正确的结果,对我的应用程序进行了很多修改。我做了很多事情来实现这一点......首先,我实现了timezone.JS以获取将在应用程序中使用的时区列表,并使用jstz获取浏览器加载页面的当前时区。接下来,我必须使(对于mvc)一个文件get方法访问时区以加载到timezoneJS。

接下来,在保存时区时,我将pst指定为类型,然后在roundtrip上转换回utc以更新接口。

在格式化我的Json日期时,我运行timezoneJS方法并从jstz获取时区名称,并设置新的日期值,如下所示:

var timezone = jstz.determine();
timezoneJS.timezone.zoneFileBasePath = '/Item/GetTz'; // get file method
var dt = new timezoneJS.Date(parseInt(jsonDate.substr(6), timezone.name())); // strips out date from json date
dt.setTimezone('America/Los_Angeles');

这允许云项目在任何服务器上运行,并在任何浏览器中显示,无论时区如何,并允许用户本地查看和配置时区敏感数据,并允许用户查看开始/结束日期可配置的数据库值。

答案 1 :(得分:0)

答案 2 :(得分:0)

你试过吗,

date.toLocaleString()

可替换地, 您可以创建新的Date对象并使用Date.setUTC