DateTime.TryParse没有按预期工作
本文关键字:工作 TryParse DateTime | 更新日期: 2023-09-27 17:49:39
我试图得到这个日期字符串09 Apr 2015: 15:16:17以这种格式显示09/04/2015 15:16:17。这是我试过的。
DateTime dtDateTime = new DateTime();
string dateString = "09 Apr 2015: 15:16:17";
DateTime dateValue;
DateTime.TryParse(dateString, out dateValue);
dtDateTime = dateValue;
这是输出01/01/0001 00:00:00
我认为TryParse
会将dateString
值转换为所需的DateTime
格式。我做错了什么?
你应该这样做:
DateTime dtDateTime = new DateTime();
string dateString = "09 Apr 2015: 15:16:17";
DateTime dateValue;
if (DateTime.TryParseExact(dateString, @"dd MMM yyyy':' HH':'mm':'ss",
new CultureInfo("en-us"), DateTimeStyles.None, out dateValue))
dtDateTime = dateValue;
使用TryParseExact
,您可以提供一个自定义日期格式字符串来匹配您的输入日期。在上面的例子中,我在年份之后添加了额外的:
。
同时,你必须使用一个能理解你的月名的CultureInfo
;这里我假设你有一个英文格式的日期。
您需要指定格式,因为它不是标准日期格式字符串:
DateTime.TryParseExact(
dateString,
"dd MMM yyyy: HH:mm:ss",
CultureInfo.CurrentCulture,
DateTimeStyles.None,
out dateValue);
此外,您应该检查调用的结果,因为TryParse
和TryParseExact
返回true
/false
您可以使用TryParseExact
方法:
DateTime.TryParseExact(dateString, "dd MMM yyyy: HH:mm:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.AllowWhiteSpaces,
out dtDateTime);
提示:
- 如果您使用MMM,月份将被视为3个字母格式(如Apr)
- 如果您使用HH而不是HH这意味着小时部分是24小时格式,它将不会失败解析15小时