时间间隔.ParseExact不能识别输入格式

本文关键字:识别 输入 格式 不能 ParseExact 时间 | 更新日期: 2023-09-27 18:17:40

我知道有很多这样的问题,但我似乎找不到我的答案。

我有这行c#代码:

var x = TimeSpan.ParseExact("800", "hmm", CultureInfo.InvariantCulture);

它抛出一个异常,说输入格式无效。如果我输入"0800"answers"嗯",它就能工作。我看到有人在TimeSpan-Conversions中使用单个"h",所以必须能够这样做。也没有需要转义的特殊字母。

我尝试使用CurrentCulture而不是InvariantCulture,但这并没有改变任何东西。现在,我填充我的字符串有0在左边,但我想知道,为什么TimeSpan-Parsing失败。

时间间隔.ParseExact不能识别输入格式

我不知道为什么会这样,也不知道它是在哪里记录的,但是TimeSpan.ParseExact中似乎不支持三位数的时间跨度。所以你可以通过填充前导零来解决这个问题:

string ts = "800";
var x = TimeSpan.ParseExact(ts.PadLeft(4, '0'), "hhmm", CultureInfo.InvariantCulture);

我猜TimeSpan不能解析这个的原因与DateTime.ParseExact不能解析带有一个或两个数字月份且没有分隔符的7位数的原因有关。