我从自动化系统收到日期时间:00:00:30:00
。
当我尝试将其解析为TimeSpan
时,我收到此错误:
输入字符串的格式不正确。
哪种格式可以帮助我将其转换为TimeSpan
?
答案 0 :(得分:7)
您可以将custom TimeSpan format string与ParseExact
方法一起使用:
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;
}
当您需要解析负时间跨度时,需要进行额外的工作。