2014-12-29 137 views
0

我需要的数据类型是DataTime? 样品字符串值我都像11/28/2014 1:40:42 AM 我应该使用什么格式,将它们转换为DateTime? 我发现DateTime.ParseExact方法,但仍然不知道什么基础上的形状的格式输入我有的输入。将字符串转换为DateTime?

+0

要使用精确的分析,请参阅MSDN格式化提示:http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx – VoteCoffee

+0

HTTP:// msdn.microsoft.com/en-us/library/w2sa9yss%28v=vs.110%29.aspx – VoteCoffee

+0

http://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29。 aspx – VoteCoffee

回答

1

可以使用固定区域性解析这个格式:

DateTime? result = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 

的类型result变量的将是DateTime?(这是一样的Nullable<DateTime>)。请确保您确实需要可以为空的类型,因为DateTime.Parse的结果将始终为DateTime值,从不会有null

如果你想赶上情况下解析失败,你可以去这样的:

DateTime result; 
if (!DateTime.TryParse("11/28/2014 1:40:42 AM", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out result)) 
{ 
    // Handle error 
} 
+2

为什么你声明为'var'然后投射?为什么不只是声明为'DateTime?'? – learningcs

+1

“var”表示编译器使用任何类型的赋值右侧。因为OP要求它,所以我铸造了Nullable (DateTime?)。查看更新的答案。 – Frank

+0

谢谢,是否还有一种方法可以捕获不良格式以提高安全性?例如,我是否需要检查结果为空或我是否需要将其封装在try-catch中?是的,架构是可空的DateTime – Bohn

-1

DateTime.Parse(string),它使用默认的格式提供。一般来说,由于文化转换器改变格式(和他们改变DateTime很多)的方式,你想要默认。

+0

OP要求解析特定格式:11/28/2014 1:40:42 AM – Frank

0

您可以使用下面的代码。

try 
{ 
    DateTime Value = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 
} 
catch(Exception e) 
{ 
    //throw exception 
}