2012-03-31 54 views
1

我在msdn中找到了一個用於datetime轉換的例子。但它不起作用,落入catch()。爲什麼這個代碼塊不起作用?String to Datetime無法轉換 - C#

DateTime dateValue; 
     string dateString = "2/16/2008 12:15:12 PM"; 
     try { 
     dateValue = DateTime.Parse(dateString); 
     Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue); 
     } 
     catch (FormatException) { 
     Console.WriteLine("Unable to convert '{0}'.", dateString); 
     } 

回答

5

您使用的任何一個日期/時間格式的當前區域性的想法是 - 和我的猜測是,你的文化是在一天前的一個月正常來。

如果你知道的格式,我通常使用固定區域性和TryParseExact - 絕對使用Parse和catch塊;請使用TryParseExactTryParse。在這種情況下:

if (DateTime.TryParseExact(dateString, "M/d/yyyy hh:mm:ss tt", 
          CultureInfo.InvariantCulture, 0, out dateValue)) 
{ 
    Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue); 
} 
else 
{ 
    Console.WriteLine("Unable to convert '{0}'.", dateString); 
} 

如果知道輸入的格式,但你知道的文化用,我只是用DateTime.TryParse用適當的文化。

+0

我不知道,文化是對錯誤的影響,太感謝你了,我得到的答案 – Merve 2012-03-31 09:47:39

1

嘗試使用ParseExact傳遞適當的格式提供如下例所示:

string dateString = "2/16/2008 12:15:12 PM"; 
    string format = "M/dd/yyyy hh:mm:ss tt "; 

    DateTime dateTime = DateTime.ParseExact(dateString, format, 
     CultureInfo.InvariantCulture);