Javascript 反序列化无时区的JSON日期
我有一个问题,从昨天开始就一直困扰着我,我不知道如何处理它Javascript 反序列化无时区的JSON日期,javascript,asp.net-mvc,json,datetime,Javascript,Asp.net Mvc,Json,Datetime,我有一个问题,从昨天开始就一直困扰着我,我不知道如何处理它 我的数据库中有一个日期字段,其中包含以下值: 然后我的应用程序获取该值并将其发送到我的web表单。(值仍然相同:)这很好 在客户端,我暂停了javascript警报,以查看来自JSON的值(值仍然相同:),这很好 客户端中警报的代码如下: // transaction json model var jsonTransaction = @(Html.Raw(Json.Encode(this.Model.Transacti
- 我的数据库中有一个日期字段,其中包含以下值:
- 然后我的应用程序获取该值并将其发送到我的web表单。(值仍然相同:)这很好李>
- 在客户端,我暂停了javascript警报,以查看来自JSON的值(值仍然相同:),这很好李>
// transaction json model
var jsonTransaction = @(Html.Raw(Json.Encode(this.Model.Transaction)));
alert(new Date(parseInt(jsonTransaction.Date.substr(6))));
- 现在,当我将值发送回服务器时,这就是我得到的值
- 最后,在JSON反序列化之后,我的日期时间是错误的!!现在是第8天,而不是第7天
public JsonResult SaveBill(string jsonTransaction, string jsonTranDetails)
{
_appState = this.AppState;
JsonResult returnVal = returnVal = Json(
new { Success = true }
);
var transaction = JsonConvert.DeserializeObject<BillTransaction>(jsonTransaction, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore });
public JsonResult SaveBill(字符串jsonTransaction,字符串jsonTranDetails)
{
_appState=this.appState;
JsonResult returnVal=returnVal=Json(
新建{Success=true}
);
var transaction=JsonConvert.DeserializeObject(jsonTransaction,新的JsonSerializerSettings(){NullValueHandling=NullValueHandling.Ignore});
如果有任何关于如何用日期来解决这个问题的线索,我应该得到相同的日期,因为我没有改变任何事情。希望有人能指导我找到解决方案
提前感谢。Java脚本在将日期解析为currentdate=new date(123232)时使用通用时间 所以,当您向客户端发送日期时,请将其转换为ISO日期,例如 将日期转换为strong之前,请确保日期为UTC
return String.Format("{0:yyyy-MM-ddTHH:mm:ss.fffZ}", dt);
顺便说一句,我已经创建了JSON转换来覆盖客户端的任何日期序列化以使用上述函数。如果使用Newtonsoft的JSON.NET,这个问题就会消失。ASP.NET MVC 4的新web API使用相同的解析器。这应该讨论所有你需要知道的:我获得相同日期的唯一方法是在服务器si上这样做de:JsonConvert.DeserializeObject(jsonTransaction,新JsonSerializerSettings(){NullValueHandling=NullValueHandling.Ignore,DateFormatHandling=DateFormatHandling.MicrosoftDateFormat,DateTimeZoneHandling=DateTimeZoneHandling.Local});但不知道是否使用DateTimeZoneHandling.Local可以??这取决于服务器端反序列化代码。JSON编码为字符串-
“日期(1341706634733)”
-正在被服务器端代码中的某个内容解释。该时间戳用于正确的日期。没有标准的方法用JSON编码日期,因此这取决于JsonConvert
代码的工作方式。反序列化程序代码似乎将时间戳解释为相对于本地时间,而不是UTC t我认为这是错误的:DateTimeZoneHandling=DateTimeZoneHandling.Local
但我不熟悉该软件。应该有一个选项将其设置为UTC,所以我会尝试。