2015-07-21 99 views
1

我正在使用web API 2與實體框架v 6.0.0。我有一個包含所以我用數據說明這樣叫StudyGroupStartDate日期列的表:實體框架日期時間ASP.NET

[Column(TypeName = "Date")] 
    public DateTime? StudyGroupStartDate { get; set; } 

,這是它是如何保存在數據庫中: 2015年7月20日。 但是當我找回它,並顯示它返回這樣的: 2015-07-20T00:00:00(我想這是喜歡它是如何保存在數據庫中),我不使用MVC

注,我創建了一個空的Web應用程序,並選擇了Web API,所以我只使用了使用該模型生成的控制器。並且這是我的控制器的一個示例。

// GET: api/StudyGroups 
    public List<StudyGroup> GetStudyGroups() 
    { 
     return db.StudyGroups.Where(a=>a.IsDeleted==false).ToList(); 
    } 

我只是改變了GET請求的生成的代碼來檢索結果作爲具有IS_DELETED是假的一個條件列表。

回答

0

我不知道你的問題到底是什麼。您必須在前端格式化DateTime,即解析此日期時間值(2015-07-20T00:00:00),然後根據需要格式化。

另一種可能是投了DateTimeString,做這樣的事情:

// GET: api/StudyGroups 
public List<Object> GetStudyGroups() 
{ 
    return db.StudyGroups.Where(a=>a.IsDeleted==false) 
     .Select(it => new { studyGroup = it, it.StudyGroupStartDate.ToString("M/dd/yyyy") }) 
     .ToList(); 
} 

還有第三種可能性,但畢竟是太棘手,我認爲:您可以創建一個String屬性返回僅此字段String,你想要的格式(見下文):

[Column(TypeName = "Date")] 
public DateTime? StudyGroupStartDate { get; set; } 

[Column(TypeName = "DateStr")] 
public String StudyGroupStartDateStr { 
    get { 
    return StudyGroupStartDate.ToString("M/dd/yyyy"); 
    } 
} 

記住:在這種情況下,你需要使用/顯示DateStr列,而不是Date列。

+0

我的問題是,StudyGroupStartDate列的類型是日期,當我檢索它時,它返回爲DateTime(通知2015-07-20T00:00:00(我不想)vs 7/20/2015 (我想)),我試過你的解決方案,但它給了我一個錯誤:無效的匿名類型成員聲明 –

+0

正如我所說,你得到這種格式,因爲這是'DateTime.ToString'方法的默認格式,在這種情況下,你需要解析然後用你想要的格式格式化'DateTime'。你在這種情況下可能嗎? – lssilveira

+0

我在我的答案中提出了另一個解決方案,再次檢查。 – lssilveira