【发布时间】:2016-11-11 18:19:06
【问题描述】:
我有许多不同格式的比赛时间结果(或多或少是小时、分钟、秒和毫秒的任意组合):
- 01:22:51.15
- 22:15.12
- 15.0
- 12:21
- ...
我用一个有效格式列表来解析它们,到目前为止,所有格式都可以工作,除了一个:单秒格式,例如“5”。
出于某种原因,以下列表(包含“s”作为第一项)无法帮助我将字符串“5”解析为 DateTime,但“25”可以正常工作。
var timeString = "5";
var timeFormats = new[] { "s", "s.f", "s.ff", "ss", "ss.f", "ss.ff", "m:ss", "m:ss.f", "m:ss.ff", "mm:ss", "mm:ss.f", "mm:ss.ff", "H:mm:ss", "H:mm:ss.f", "H:mm:ss.ff", "HH:mm:ss", "HH:mm:ss.f", "HH:mm:ss.ff" };
DateTime timeValue;
DateTime.TryParseExact(timeString, timeFormats, null, DateTimeStyles.None, out timeValue);
知道为什么这不能像我预期的那样工作吗?或者有没有更简洁的方法来覆盖所有这些时间格式而不添加另一个 nuget 包......? 干杯!
【问题讨论】:
-
我认为询问该代码当前提供的内容并不过分? “这行不通”没什么好说的。
-
您正在使用时间跨度。这就是
TimeSpan的用途,而不是DateTime。 -
对不起,我的意思是 TryParseExact 确实返回 false。