如何将字符串`00:00:30:00`格式化为TimeSpan?

时间:2010-12-25 15:13:07

标签: c# parsing datetime

我从自动化系统收到日期时间:00:00:30:00

当我尝试将其解析为TimeSpan时,我收到此错误:

  

输入字符串的格式不正确。

哪种格式可以帮助我将其转换为TimeSpan

2 个答案:

答案 0 :(得分:7)

您可以将custom TimeSpan format stringParseExact方法一起使用:

TimeSpan ts = TimeSpan.ParseExact("00:00:30:00", 
                                  "hh:mm:ss:ff", 
                                  CultureInfo.InvariantCulture)

如果您不想冒可能的格式异常风险,可以使用TryParseExact方法 - 这些方法需要out参数并返回一个布尔值,指示解析是否成功。

答案 1 :(得分:2)

Decent TimeSpan解析仅适用于.NET 4.0。对于早期版本,您可以劫持DateTime解析方法,通过Ticks属性从日期转换为时间跨度。像这样:

    public static bool TryParseTime(string txt, string fmt, out TimeSpan ts) {
        DateTime dt;
        bool ok = DateTime.TryParseExact(txt, fmt, null, 
            System.Globalization.DateTimeStyles.NoCurrentDateDefault, out dt);
        ts = new TimeSpan(ok ? dt.Ticks : 0);
        return ok;
    }

当您需要解析负时间跨度时,需要进行额外的工作。