總之,我的API控制器和使用結果的JavaScript之間,日期被轉換成一個可愛的NaN
日期轉換:從LINQ到JSON爲Javascript
我的問題是在哪裏,也許是怎麼樣,一個建議我修復了這條長鏈。
第1步:檢索數據庫對象與LINQ
return _dbContext.Points.Where(
point => point.AccountId == account.AccountId)
.OrderBy(point => point.EarnedOn).ToList();
這似乎不合理在這裏做任何改變。該模型指定了一個DateTime字段,所以我們在這裏確實沒有任何與字符串的交互。
步驟2:API控制器發送響應
var points = _pointRepository.GetByUserName(userName);
return Request.CreateResponse(HttpStatusCode.OK, points);
我可以在這裏指定如何解析日期?即使在服務器端處理,這是否合理?我想我可以遍歷所有的對象和手動設置,就像這樣:
for (var i = 0; i < points.Count(); i++)
{
points.ElementAt(i).EarnedOn = points.ElementAt(i).EarnedOn.ToUniversalTime();
}
但談多枚舉!
第3步:客戶端解析JSON數據到一個JS對象,然後解析從字符串爲int 大大縮短了可讀性
var points = JSON.parse(response);
for(i = 0; i < points.length; i++){
var date = Date.parse(points[i].EarnedOn);
此時日期,只有這麼多我可以。我已經在第2步結束時將日期轉換爲字符串,而我定位的瀏覽器根本不知道如何使用C#的默認格式(我假設這是發送的內容)。在某些瀏覽器中它可以工作,在其他瀏覽器中,我可以獲得NaN
。
對不起,很長的解釋,但如果有人可以指出他們將在何處以及如何應用此修復程序,我會很感激。
====更新====
有問題的瀏覽器是Android的股票瀏覽器。我已經在我的手機和BlueStacks模擬器上測試了這一點。兩者都是最新的,並且都不起作用。它在Chrome中工作。
的時間(切出的所有其他數據)的JSON輸出顯示如下:
"EarnedOn":"2012-05-10T00:00:00"
這看起來很奇怪。您定位的瀏覽器*是什麼,JSON實際上是什麼樣子?你可以發佈嗎?至少是日期表示。 – aquinas 2012-07-17 16:48:19
@aquinas更新我的問題以回答你的問題 – 2012-07-17 16:51:07
[此圖表](http://dygraphs.com/date-formats.html)顯示所討論的格式只能被較新的瀏覽器識別,這可能是此處的問題。他忽略在列表中顯示移動瀏覽器 – 2012-07-17 16:54:39