2012-03-31 53 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);