我正在尝试从字符串中检索一个时间跨度,但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.
可能应该提到您需要转义冒号字符。
TryParseExact("04:00:01", "HH\\:mm\\:ss" ...
Run Code Online (Sandbox Code Playgroud)