2013-06-19 84 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不具有相同的反序列化器 –