我知道有很多这样的问题,但我似乎无法找到答案。
我有这行C#代码:
var x = TimeSpan.ParseExact("800", "hmm", CultureInfo.InvariantCulture);
它抛出一个异常,说输入格式无效。如果我把" 0800"和" hhmm",它有效。我见过人们使用单曲" h"在TimeSpan-Conversions中,所以必须这样做。也没有需要转义的特殊字母。
我尝试使用CurrentCulture而不是InvariantCulture,但这并没有改变任何东西。现在,我填充我的字符串在左侧有0,但我想知道,为什么TimeSpan-Parsing失败。
答案 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的原因有关。