2017-04-27 50 views
0

我試圖將字符串轉換爲DateTime時不斷收到錯誤。c#DateTime轉換錯誤 - 字符串未被識別爲有效日期時間

Error: 
String was not recognized as a valid DateTime. 

我試圖轉換的字符串是從DataTable中獲取的。奇怪的是,如果我單獨使用日期並將其放入一個字符串中,則沒有錯誤。只有當我從表格中獲得日期時纔會出現錯誤。

這是給我的麻煩日期:2008-04-20T07:00:00Z

這裏是我的代碼:

string dateString = "2008-04-20T07:00:00Z"; 

foreach (DataRow dr in tblData.Rows) 
{ 
     string tblDate = dr["DOCUMENTDATE"].ToString(); 
     string format = "yyyy-MM-ddTHH:mm:ssZ"; 

     DateTime convertDate = DateTime.ParseExact(tblDate, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); 
     //DateTime convertDate = DateTime.Parse(dateString); 
     dr["DOCUMENTDATE"] = convertDate.ToString(); 
    } 

我擡頭其他職位,並試圖解析, ParseExact,Convert.ToDateTime仍然會出現相同的錯誤。

EDIT 1:

爲DR中的數據類型[ 「DOCUMENTDATE」]是一個字符串。 填充表格的數據是從轉換爲xml的json中獲取的。然後我使用XMLtoDataTable。

我在做什麼錯?

+0

你在調試器中看過tblDate嗎?顯而易見的結論是,它不包含您認爲它包含的內容 – pm100

+0

嘗試在您的表格中顯示您的示例數據。 –

+1

我也檢查過。來自tblDate DOCUMENTDATE的輸出是正確的值(即2008-04-20T07:00:00Z) – TrooperEOF

回答

0

在這裏,試試這個。我認爲問題是,你不能提供一個可識別的格式:

相關小提琴:https://dotnetfiddle.net/u1IoNX

string format = "yyyy-MM-ddTHH:mm:ssZ"; 
    string tblDate = dr["DOCUMENTDATE"].ToString(format); 


    DateTime convertDate = DateTime.ParseExact(tblDate, format, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); 
    dr["DOCUMENTDATE"] = convertDate.ToString(format); 

編輯

從文檔:

https://msdn.microsoft.com/en-us/library/ms131038(v=vs.110).aspx

The Da teTime.ParseExact(String,String,IFormatProvider,DateTimeStyles) 方法解析日期的字符串表示形式,該日期格式必須爲格式參數定義的 格式。

如果我使用上面的datetring示例,我不會收到任何錯誤。你的日期在調試器中看起來可能是正確的,但我不認爲它的格式正好符合你指定的格式。

+0

這裏的問題是他只是試圖將該示例字符串轉換爲datetime。 –

+2

很可能dr [「DOCUMENTDATE」]與測試值格式不一樣dateString =「2008-04-20T07:00:00Z」 – spinalfrontier

+0

這對我不起作用。它不允許ToString()的「格式」參數。 – TrooperEOF

相關問題