【问题标题】:TimeSpan.ParseExact does not recognize input formatTimeSpan.ParseExact 无法识别输入格式
【发布时间】:2014-10-05 07:16:36
【问题描述】:

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

我有这行 C# 代码:

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

它会抛出一个异常,指出输入格式无效。如果我输入“0800”和“hhmm”,它就可以了。我见过人们在 TimeSpan-Conversions 中使用单个“h”,因此必须可以这样做。也没有需要转义的特殊字母。

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

【问题讨论】:

    标签: c# .net time-format


    【解决方案1】:

    我不知道为什么会这样或记录在哪里,但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的原因有关。

    【讨论】:

    • @Manuel Hoffmann:“现在,我正在填充我的字符串以使左侧有 0” 哎呀,直到现在我还没有看到这已经是你的解决方法。也许我的最后一句话有一些附加值。
    • 你说得对,我已经这样做了。 C# 方面的行为多么奇怪。
    猜你喜欢
    • 2019-06-10
    • 2014-12-06
    • 2013-06-12
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多