2012-01-31 31 views
1

我拉出一個數據庫的日期,它是一個varchar。但是在數據庫中它被格式化爲Y/M/D /。我需要它在前端渲染一個D/M/Y。我使用Entity框架將它帶入Linq。它看起來像這樣:Display varchar日期爲D/M/Y?

var startdateParam = new ObjectParameter(「StartDate」,typeof(string));

我然後調用存儲過程:

var webinarProducts = mgr.GetWebinars(groupCodeParam, startdateParam).ToList(); 

我然後將其分配給我的產品列表:

webinar.StartDate = startdateParam.Value.ToString();

最後,在CSHTML文件(我建立這MVC3)我像這樣顯示:

  • @ Model.StartDate
  • 但是當我發佈的頁面,它只是格式化的怪異日期在數據表Y/M/D內。

    我試着轉換/解析/格式化這一切,我的代碼,但我不斷收到錯誤。將其轉換爲我想要的任何日期格式的最佳方法是什麼?

    +2

    什麼錯誤?你有什麼嘗試儘可能datetime.parse? – AaronS 2012-01-31 21:23:12

    +2

    爲什麼您的數據庫中的日期字段首先是varchar?如果您可以修復架構,那將是最好的方法。 – 2012-01-31 21:23:16

    +0

    我可以修復它。它是客戶端數據庫。我不能改變任何事情。 – 2012-01-31 21:29:31

    回答

    3

    使用內置解析?

    http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

    格式字符串在這裏:http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

    webinar.StartDate = DateTime.ParseExact(startdateParam.Value.ToString(), "yyyy/MM/dd", CultureInfo.InvariantCulture); 
    

    然後在前端,您可以指定

    @Model.ToString("dd/MM/yyyy") 
    
    +0

    謝謝eouw0o83hf。我試過這個,我得到這個錯誤再次:「一個類型'System.DateTime'的實例不能被分配給字符串類型的變量,這與我在任何地方嘗試轉換爲日期時間的地方都是一樣的錯誤 – 2012-01-31 21:35:41

    +0

    複製/粘貼你要用來轉換的代碼字符串 - 我敢打賭,我們可以調試的語法錯誤 – eouw0o83hf 2012-01-31 21:55:03

    +1

    我認爲這是因爲webinar.StartDate是一個字符串?如果是這樣的話,您可能需要考慮將其更改爲'System.DateTime',然後使用代碼 – 2012-01-31 21:55:06

    1

    如果你可以改變的模式,我會用一個DATETIME列,而不是的varchar。

    如果不是,我會在C#中使用內置的DateTime函數。此代碼應該工作:

    DateTime dateObj = DateTime.Parse(startdateParam.Value.ToString()); 
    string outDateString = dateObj .ToString("dd/MM/yy"); 
    

    希望有所幫助。