2009-06-28 217 views
1

我有一個問題,而轉換爲字符串,其值是dd.mm.yyyyDateTime在C#問題在C#日期時間轉換

string OriginalDateFormat = "28.06.2009"; 
DateTime dt= Convert.ToDateTime(OriginalDateFormat); 

拋出異常"String was not recognized as a valid DateTime."

但如果是在mm.dd.yyyy則運行精細。

我GOOGLE了很多網站,但都是徒勞的

任何想法?

在此先感謝。

+1

你看http://msdn.microsoft.com/en-u S /庫/ system.datetime.aspx?谷歌並不是像這樣的最佳工具。 – 2009-06-28 11:39:54

回答

8

使用DateTime.ParseExact,並指定確切格式字符串:

DateTime dt = DateTime.ParseExact("28.06.2009", "dd'.'MM'.'yyyy", 
            CultureInfo.InvariantCulture); 

如果是這樣的價值是來自用戶的輸入,您可能需要使用DateTime.TryParseExact如此你可以優雅地處理失敗:

DateTime dt; 
if (DateTime.TryParseExact("28.06.2009", "dd'.'MM'.'yyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, // Default formatting options 
         out dt)) 
{ 
    Console.WriteLine("Successfully parsed {0}", dt); 
} 
else 
{ 
    Console.WriteLine("Did not recognise date"); 
} 
+0

打敗我吧;-p – 2009-06-28 11:40:36

3

我認爲它是一個文化問題......你指定的格式是(我認爲)GB和默認文化是美國。 您還需要指定文化。

相反試試這個:

IFormatProvider culture = new CultureInfo("en-US", true);//en-Us or en-GB not sure 

DateTime dt = DateTime.Parse(p, culture, DateTimeStyles.AssumeLocal); 
+0

感謝您的想法。幫助 – 2009-06-28 11:44:30