TimeSpan.ParseExact无法识别输入格式

时间:2014-08-12 09:20:08

标签: c# .net time-format

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

我有这行C#代码:

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

它抛出一个异常,说输入格式无效。如果我把" 0800"和" hhmm",它有效。我见过人们使用单曲" h"在TimeSpan-Conversions中,所以必须这样做。也没有需要转义的特殊字母。

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

1 个答案:

答案 0 :(得分:2)

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

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

我想TimeSpan无法解析此问题的原因与DateTime.ParseExact cannot parse 7 digits with one or two digit month and without a delimiter的原因有关。