[英]DateTime.TryParseExact not working as expected
为什么这不起作用?
DateTime.TryParseExact(text, "H", CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out value);
我想解析仅提供小时部分的Time值,但是它抛出FormatException。
另一方面,这有效:
DateTime.TryParseExact(text, "HH", CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out value)
有人知道原因吗?
谢谢。
好的,我必须先查一下-似乎应该可以使用,但这不是因为自定义格式字符串无效。 自定义格式字符串的宽度至少应为两个字符-请参阅:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#UsingSingleSpecifiers
因此,根据文档,您可以使用以下代码解决此问题:
DateTime.TryParseExact(text, "%H", CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out value);
我猜这意味着TryParseExact
无法将小时部分放入单个字符中,这对我来说是可以理解的,因为小时将基于12或24小时。
没有更多具体信息,在输入的情况下,您正在构造的DatTime无法确定AM / PM。 H仅允许使用1-12的值,从而产生歧义。 HH提供了额外的信息。
您传递给DateTime.TryParseExact
的格式说明符需要与您正在解析的字符串完全匹配。
例如,通过“ H”格式传递“ 15:20”将失败,因为字符串中还有其他内容。
解析整个字符串并使用DateTime.Hour
来获取小时,或者创建仅包含小时部分的字符串并使用Int32.Parse
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.