我正在编写一个基于云的程序,它利用 UTC 将日期保存到服务器,并在往返时将其转换回来。问题是,我在云中的实例正在根据获取结果的浏览器上的本地化设置自动转换 JsonResult 日期时间值。
我已经完成了大量的步骤来确保两个级别上的服务器端代码返回正确的数据,并且它在所有实例上,并且我的页面上没有 Javascript 代码进行更改(甚至删除了我的所有Javascript 日期格式以防万一),我已经使用 Firebug 进行了追踪,以确定它更改的确切点,即我的页面从 JsonResult 方法接收 Json 结果的时间。就像我说的,我在发送到页面之前已经调试了这些值,它们是正确的,并且根据我的响应,它们根据浏览器位置进行了修改......
有人遇到过类似的问题吗?
返回值:日期(1341792000000) 07/08/2012 17:00
应为:日期(1341817200000) (07/09/2012 12:00AM)
谢谢
最佳答案
我最终得到了正确的结果,并对我的应用程序进行了许多修改。我做了很多事情来实现这一点...首先,我实现了 timezone.JS 来获取将在应用程序中使用的时区列表,并使用 jstz 来获取加载页面的浏览器的当前时区。接下来,我必须(针对 mvc)创建一个文件获取方法来访问时区以加载到 timezoneJS 中。
接下来,在保存时区时,我指定 pst 作为类型,然后在往返时转换回 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');
这允许云项目在任何服务器上运行,并显示在任何浏览器中,无论时区如何,并允许用户本地查看和配置时区敏感数据,并允许用户查看开始/结束日期可配置的数据库值。
关于asp.net-mvc - 防止 JsonResult 自动格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370146/