输入字符串的格式不正确。在时间跨度

时间:2014-08-03 06:04:05

标签: c#

TimeSpan newEventStartTime = TimeSpan.ParseExact(Start_Time, "HH:mm", CultureInfo.InvariantCulture);

当这行代码执行时,它会产生错误输入字符串的格式不正确。 并且变量Start_Time数据类型是c#中的字符串,它在java脚本中的数据类型是时间。

2 个答案:

答案 0 :(得分:2)

我不久前在做这样的事情时遇到了麻烦。这里有一些事情需要在你的格式字符串中进行修改。

  1. 由于TimeSpan类型指的是时间段感觉中的小时而不是时间感(即使是,它也用于显示一天中的时间),您需要小写h秒。大写意味着24小时制,当你没有{AM}和PM的概念时,这是不相关的,TimeSpan不是。
  2. 你需要逃避冒号,使它在文本中保持解析。
  3. 鉴于此,你可以这样做:

    TimeSpan newEventStartTime = TimeSpan.ParseExact(Start_Time, @"hh\:mm", CultureInfo.InvariantCulture);
    

    如果您需要帮助,可以查看Custom TimeSpan Format Strings MSDN页面,但我绝对同意,这不是世界上最好记录或最容易克服的错误。


    这很可能与你无关,但我只是在良好的实践中包括它。只有当你真的想保留那个确切的格式字符串时才会这样。如果您可以稍微宽松一点,可以使用"c"格式指示符。这允许从传入的字符串中保留更多细节。这些选项之间的选择实际上取决于您以及您希望使用它的情况。但同样,因为你甚至认为首先使用ParseExact而不是Parse,我怀疑我上面用@"hh\:mm"给出的例子是你正在寻找的。

答案 1 :(得分:1)

试试这个。它工作正常。如果有任何其他疑惑,请告诉我。

TimeSpan newEventStartTime = TimeSpan.ParseExact("12:44",@"hh\:mm",CultureInfo.InvariantCulture);

请参阅dotnetfiddle链接https://dotnetfiddle.net/In71Rh