2013-02-08 72 views
1

我編在C#下面的代碼Datetime.ParseExact()不工作

string datetime = String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", root.SelectSingleNode("lasttime").InnerText); 



lastUpdateTimestamp = DateTime.ParseExact(datetime, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.CurrentCulture); 

但在輸出我得到lastUpdateTimestamp是2013年2月8日上午07點零零分24秒,而不是02/08/2013 07:00:24 AM

任何想法我失蹤?

得到這個值我運行一個查詢並得到這個錯誤

Invalid month in timestamp "2": cannot find leading zero [SQL query syntax invalid or unsupported.] 

大家好後,我得到了解決,而不是通過lastUpdateTimestamp我現在服用日期字符串變量和teking其價值適當的格式。其工作原理

+0

root.SelectSingleNode(「lasttime」)的值是什麼?InnerText? – animaonline

+0

他們有什麼不同?你正在尋找一個'DateTime'對象,因爲它沒有任何特定的格式來顯示 – V4Vendetta

+0

@ animaonline 02/08/2013 07:00:24 AM – Aquarius24

回答

2

root.SelectSingleNode("lasttime").InnerText返回一個字符串。

您正試圖使用​​DateTime格式說明符來格式化字符串。

不知道你正在嘗試做的,但這樣的事情應該工作

string xmlstring = root.SelectSingleNode("lasttime").InnerText; 
DateTime parsed = DateTime.ParseExact(xmlstring, "M/d/yyyy h:mm:ss tt"); 

string datetime = string.Format("{0:MM/dd/yyyy hh:mm:ss tt}", parsed); 
+0

我編輯了我的問題,,請看看 – Aquarius24

+0

更新了parseexact格式以允許單位數月,日和小時 – adrianm

0

從評論:

我得到輸出lastUpdateTimestamp.ToString()。這應該是2013年2月8日上午7時00分24秒,但它顯示2013年2月8日上午七時00分24秒

lastUpdateTimestamp.ToString()使用通用日期時間格式爲當前文化將進行格式化。在你的情況下,這顯然是M/dd/yyyy...

如果你想有一個不同的格式,你需要作爲一個參數指定它DateTime.ToString,如:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt") 

或固定格式獨立於當前的文化:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture) 
0

所以您的問題不是如何解析字符串DateTimeDatetime.ParseExact但如何從DateTime得到正確的字符串:

DateTime dt = DateTime.Now; 
string dtStr = dt.ToString("dd/MM/yyyy hh:mm:ss tt" 
          , System.Globalization.CultureInfo.InvariantCulture); 

結果:

08/02/2013 10:20:18 AM 

但因爲你得到從數據庫異常:

找不到前導零[SQL查詢語法不正確或不支持

你應該真的使用參數並通過DateTime而不是string