2012-03-15 27 views
0

如何將字符串20120313轉換爲DateTime對象,其值爲13-Mar-2012將雜亂的日期字符串轉換爲c中的dateTime對象#

我把它拿來作爲

DataEffectiveDate = Convert.ToDateTime(reader["date_id"]); 

但它已經在這裏失敗(轉換爲1/1/2001)

+0

你的意思是你要轉換20120313或13-MAR-2012? – 2012-03-15 08:01:19

+2

只有一條評論 - 我認爲20120313比2012年3月13日有點*少*雜亂的格式。 – 2012-03-15 08:04:34

回答

3

您需要使用DateTime.ParseExact:如果你想

DateTime date = DateTime.ParseExact(text, "yyyyMMdd", 
            CultureInfo.InvariantCulture); 

然後它作爲「2012年3月13日」,您需要:

string reformatted = date.ToString("dd-MMM-yyyy"); 

...可選傳遞您要使用的月份名稱等任何文化

(另一種方法是用我Noda Time,它允許您解析這是只是一個本地日期,沒有任何問題它會用什麼時間,時區等)

+0

誰會想到一個字符串可以隱式轉換爲DateTime ... – flq 2012-03-15 08:04:36

+0

@flq:修正,謝謝。 (你可能剛剛編輯過它......) – 2012-03-15 08:05:15

2

當你心裏有一個特定的格式,ParseExact是有幫助的:

string s = "20120313"; 
var when = DateTime.ParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture); 

也有一個接受多個候選格式超載。

1

嘗試DateTime.ParseExact

string date = DateTime.ParseExact(reader["date_id"], "yyyyMMdd", new CultureInfo("en")); 
+0

轉換爲'string'丟失。 – clearpath 2012-03-15 08:05:27

相關問題