Lui*_*sta 5 c# datetime parsing
如何将字符串转换"28/09/2009"
到DateTime
一个特定的格式?例如:我想将"2009-09-28 17:30:40"转换为DateTime.我想将"28/09/2009 17:30:40"转换为DateTime.我想将"20090928 17:30:40"转换为DateTime.
有多种可能的格式.我试过这个:
string[] formats = new string[] {"yyyymmdd","yyyymmddThhmmss","yyyy/mm/dd hh:mm:ss","yyyy/mm/dd","yyyy-mm-dd hh:mm:ss","yyyy-mm-dd"};
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime formattedDate = DateTime.ParseExact(aDate, formats, culture, DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)
此示例引发异常,并显示消息"String未被识别为有效的DateTime".
上面的代码有什么问题?
Joe*_*orn 12
没有一种格式可以放在第一天,如下所示:"dd/MM/yyyy"
.
还要注意首都'M',因为小写'm'代表'分钟'.您的工作时间也有类似的问题; 由于你的样品全部使用24小时,你需要一个大写'H'.
您的格式字符串数组应如下所示:
string[] formats = {"dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "yyyyMMdd HH:mm:ss"};
Run Code Online (Sandbox Code Playgroud)
这些格式与提供的示例字符串完全匹配.
此外,您可能希望使用不变文化而不是en-US
在这种情况下.否则,格式字符串中的"/"字符实际上是特定于文化的日期分隔符,用户可能会在其本地系统上覆盖该字符串.
最后,因为你显然无法匹配字符串,你可能想要使用TryParseExact()
,它就像解析一样精确但使用out
参数而不是返回值,这样它就可以返回一个布尔值来指示成功或失败而不是抛出异常.
请参阅此处的完整格式字符串参考:http:
//msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
归档时间: |
|
查看次数: |
8099 次 |
最近记录: |