繁体   English   中英

DateTime.TryParseExact无法按预期工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM