TimeSpan.Parse 个字符串,包括天数 dd-hh:mm:ss

TimeSpan.Parse of string including days dd-hh:mm:ss

我要解析的时间跨度是格式dd-hh:mm:ss
Linux 命令的输出是 returns 进程已经 运行.

示例:

string s = "5-15:10:20"; // 5 days 15h 10m 20s
TimeSpan.Parse(s);

这会产生错误

System.FormatException was unhandled
Message="Input string was not in a correct format."
Source="mscorlib"
StackTrace:
   at System.TimeSpan.StringParser.Parse(String s)
   at System.TimeSpan.Parse(String s)

重要说明:代码要在.net Framework 2.0
中编写 有没有办法让 TimeParse 正确识别第一个日期部分?

编辑:我尝试用 : 替换 - 但它给出了同样的错误。

这对我有用:

TimeSpan.Parse(s.Replace('-', '.'));

这样做:

TimeSpan.ParseExact(s, @"d\-hh\:mm\:ss", null);

有关您可以使用的格式字符串的详细信息,请参阅 the manual。它们与 DateTime 格式字符串略有不同

您的字符串的问题在于字符“-”是一个可选的减号,表示负的 TimeSpan。因此,您必须在解析字符串之前使用 Replace() 方法。

this link 上,您可以看到适用于该方法的所有常用字符。为此,类似的东西会起作用:

string s = "5-15:10:20"; // 5 days 15h 10m 20s
TimeSpan.Parse(s.Replace('-', '.'));

我认为“-”肯定是错误的符号。 “-”用于指定负的 TimeSpan 既然您已经尝试过“:”小腿,请尝试使用“。”此时。

“.”是区分日期和时间的官方符号。