TimeSpan.TryParseExact不起作用

mcm*_*lab 22 c#

我正在尝试从字符串中检索一个时间跨度,但TryParseExact返回false(失败).

我看不出我做错了什么,你能帮忙吗?我在代码中尝试了2行版本,两者都不起作用.

TimeSpan.TryParseExact("04:00:01","HH:mm:ss",CultureInfo.CurrentCulture, out aTime)
Run Code Online (Sandbox Code Playgroud)

TimeSpan.TryParseExact("04:00:01","HH:mm:ss", null, out aTime)
Run Code Online (Sandbox Code Playgroud)

编辑:这里的两个响应都是正确的,我的自定义时间跨度格式的格式错误 - 我犯的错误是假设DateTime的自定义格式适用于TimeSpans,但它们没有.

Mat*_*int 36

问题只在于您指定的TimeSpan的格式字符串"HH:mm:ss".说明符HH(大写)对于时间跨度无效.你应该用hh.格式字符串确实区分大小写.

冒号(:)也需要进行转义,所以使用"hh\\:mm\\:ss",@"hh\:mm\:ss""hh':'mm':'ss".这三种形式都会产生同样的效果.

您可以在此处查看TimeSpan的有效自定义格式字符串列表.并且TimeSpan的标准格式字符串在这里.

虽然HH它对DateTime和DateTimeOffset有效,它代表24小时制,而小写hh代表12小时制,而对于TimeSpan,小时组件总是基于24小时.您会认为HH格式将是所选择的格式,因为一致性,但不是 - 它是hh.

  • 谢谢,我没有意识到 DateTime 和 TimeSpan 的自定义字符串是不同的。 (2认同)

Oğu*_*dız 5

可能应该提到您需要转义冒号字符。

TryParseExact("04:00:01", "HH\\:mm\\:ss" ...
Run Code Online (Sandbox Code Playgroud)