2013-06-19 55 views
0

我有一个从Api返回的日期作为Json对象,如下所示:Date(1371510000000) 当我打开Internet Explorer并在url中粘贴以下内容:javascript:alert(Date(1371510000000) ) 我收到2013年6月19日的日期(这是正确的)。JSon反序列化DateTime

然而,当我反序列化使用NewtonSoft的Json的解串器在.NET中这个日期,如下图所示:

var x = Newtonsoft.Json.JsonConvert.DeserializeObject<DateTime>("\"/Date(1371510000000)/\""); 

它解析日期2013年6月17日(这是不正确的)。

有什么我不正确的做法?

谢谢。

+0

好像与本地时间问题:http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript- date-to-utc – Pragmateek

+0

我用当地的文化,时区信息插入了参数JSonSerializerSettings,但问题仍然存在。 –

+0

为什么你认为“2013年6月19日”对于1371510000000是正确的?运行你的JavaScript不会每次都给出相同的结果。我不认为你的JavaScript正在做你的想法。 – MerickOWA

回答

0

的JavaScript Date对象是什么,是不是净序列化,

你做的是固定和你约会的传输对象之前:

function fixDate(date) { 
    if (date != undefined && date != null && date.getDate) { 
     var curr_date = date.getDate(); 
     var curr_month = date.getMonth() + 1; //Months are zero based 
     var curr_year = date.getFullYear(); 
     date = curr_date + "/" + curr_month + "/" + curr_year; 
     date = date.replace(/\b\d\b/g, '0$&'); 
    } 
    return date; 
} 

这个代码是为“DD/MM/yyyy“格式,但可以将其格式化为任何你喜欢的格式。

记得选择特定的格式在您的服务器以及

+0

我不明白为什么浏览器正确地反序列化同一日期。没有任何让.NET做同样的事情吗? –

+0

当您在浏览器中运行该代码时,它运行JavaScript代码,.Net不具有相同的反序列化器 –