DateTime.TryParseExact单秒
DateTime.TryParseExact single second
我有许多不同格式的比赛时间结果(或多或少是小时、分钟、秒和毫秒的任意组合):
- 01:22:51.15
- 22:15.12
- 15.0
- 12:21
- ...
我用有效格式列表解析它们,到目前为止,所有格式都有效,除了一个:单一的第二格式,例如"5".
出于某种原因,以下列表(包含 "s" 作为第一项)无法帮助我将字符串“5”解析为日期时间,但“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 包......?
干杯!
因为格式中只有一个字符,所以它被视为 the Sortable standard format,而不是带有秒的自定义格式。
要更改此设置,请在自定义格式前加上 %
字符,如 "%s"
。参见 "Using single custom format specifiers"。
此外,如果这些是比赛的实际经过时间,则 TimeSpan
是比 DateTime
更合适的数据结构。切换时要小心,因为并非所有格式标记在两个对象之间都是相同的。特别是,TimeSpan
使用 h
几个小时,而不是 H
。参见 Custom TimeSpan Format Strings。
我有许多不同格式的比赛时间结果(或多或少是小时、分钟、秒和毫秒的任意组合):
- 01:22:51.15
- 22:15.12
- 15.0
- 12:21
- ...
我用有效格式列表解析它们,到目前为止,所有格式都有效,除了一个:单一的第二格式,例如"5".
出于某种原因,以下列表(包含 "s" 作为第一项)无法帮助我将字符串“5”解析为日期时间,但“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 包......? 干杯!
因为格式中只有一个字符,所以它被视为 the Sortable standard format,而不是带有秒的自定义格式。
要更改此设置,请在自定义格式前加上 %
字符,如 "%s"
。参见 "Using single custom format specifiers"。
此外,如果这些是比赛的实际经过时间,则 TimeSpan
是比 DateTime
更合适的数据结构。切换时要小心,因为并非所有格式标记在两个对象之间都是相同的。特别是,TimeSpan
使用 h
几个小时,而不是 H
。参见 Custom TimeSpan Format Strings。