2012-08-16 45 views
0

我正在使用EF來使用匿名類型查詢數據庫。如何爲json格式化數據時間

這裏我使用EF

public JsonResult OverdueEventsCustom() 
    { 
     var eventCustomOverdue = _eventCustomRepository.FindOverdueEventsCustom(); 
     return Json(eventCustomOverdue, JsonRequestBehavior.AllowGet); 
    } 


    public IQueryable<dynamic> FindOverdueEventsCustom() 
    { 
     DateTime dateTimeNow = DateTime.UtcNow; 
     DateTime dateTomorrow = dateTimeNow.Date.AddDays(1); 
     return db.EventCustoms.Where(x => x.DateTimeStart < dateTomorrow) 
        .Select(y => new { y.EventId, y.EventTitle, y.DateTimeStart}); 
    } 

使用調試器我看到的屬性是這種格式

Date = {16/08/2012 00:00:00} 

的resultfor的JSON檢查代碼

[{ 
    "EventId": 1, 
    "EventTitle": "Homework Math", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}, { 
    "EventId": 4, 
    "EventTitle": "Homework help with Annie", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}, { 
    "EventId": 6, 
    "EventTitle": "Physic laboratory", 
    "DateTimeStart": "\/Date(1345108269310)\/" 
}] 

我需要這種格式的json

"DateTimeStart": "(16/08/2012)" 

任何想法我在這裏做錯了嗎?感謝您的幫助

相關文章

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

How do I format a Microsoft JSON date?

+1

爲什麼你需要格式爲「(16/08/2012)」'的日期?它的了'JavaScriptSerializer'的限制並沒有簡單的解決辦法見:http://stackoverflow.com/questions/726334/asp-net-mvc-jsonresult-date-format。作爲替代解決方案,您可以使用[Json.Net](http://james.newtonking.com/projects/json-net.aspx)進行json serilization。 – nemesv 2012-08-16 10:32:09

回答

1

"\/Date(1345108269310)\/"是通過一個日期的JavaScript的正確方法。我看到它的方式,你這裏有兩種選擇:

如果不明確所需要的值作爲一個日期,你可以只通過一個字符串變量JSON,包含適合打印日期。 東西沿着線:

DateTimeStart: String.Format("{0: dd-MM-yyyy}", myDate) 

如果你仍然需要在JavaScript中使用變量AA日期(計算舉例),最consice和可讀性很強的方式是創建一個JavaScript函數轉換說日期到你想要的漂亮打印字符串(我不知道這樣的功能已經存在,是不是太難,雖然創造。

function prettyDate(date) { 

    return date.getDate() + "-" + date.getMonth() + "-" + date.getFullYear(); 

} 

我會建議將它傳遞從你的字符串後面的代碼,因爲它更具可讀性,但是隻有當你不需要使用日期除了顯示以外才可以使用