2011-01-06 108 views
1

我有數據存儲在一個SQL數據庫,我試圖讀入ASP.NET MVC應用程序。我可以很好地獲取數據 - 但日期時間並沒有轉化爲任何有用的東西。如何正確地將SQL datetime轉換爲C#datetime?

這裏是我到目前爲止(一些數據刪節爲 「...」):

public JsonResult GetXYZByStatusJson() 
    { 
     var sqlConn = new SqlConnection(...); 
     var command = new SqlCommand("...", sqlConn); 

     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.AddWithValue("@status", 0); 

     sqlConn.Open(); 
     var sqlResult = command.ExecuteReader(); 

     var collection = new Collection<Object>(); 
     while (sqlResult.Read()) 
     { 
      collection.Add(new XYZ(
       ... 
       Convert.ToDateTime(sqlResult["DateSent"]), 
       Convert.ToDateTime(sqlResult["DateDue"]), 
       ... 
       )); 
     } 

     sqlResult.Close(); 
     sqlConn.Close(); 

     return Json(collection); 
    } 

產生的JSON格式化罰款,但日期看起來像「\ /日期(1294120800000)\/「

如何正確地將SQL日期時間轉換爲C#DateTime?使用.ToString()沒有任何影響。

+1

通過SQL你的意思SQL服務器?如果沒有使用哪個數據庫服務器? – 2011-01-06 19:42:03

+3

你如何保持你的日期時間值在數據庫中?你使用哪種類型? – HABJAN 2011-01-06 19:43:29

+1

@Jim - 因爲他使用`SqlCommand`,所以可以安全地假設SQL Server – 2011-01-06 19:44:47

回答

2

Sql Server和C#之間的轉換沒有任何問題。

問題是JsonResult如何格式化字符串。

下SO問題說明了如何在客戶端對其進行處理:How do I format a Microsoft JSON date?

另一種方法是創建自己的替代JsonResult

0

如果是SQL Server,sqlResult [「DateSent」] .ToString()會給你這樣的東西: 「6/9/1999 12:00:00 AM,8/15/1999 12:00: 00 AM「

使用內置的字符串方法(.IndexOf(),.Remove()等)或創建自己的方法來解析您需要的字符串。