我有以下格式的几个字符串:
“1:15”
“:45”
“1:30:45”
我需要将它们转换为 TimeSpan,但是当我 TimeSpan.Parse 其中一些(例如第一个)时,它会将其返回为 1 小时 15 分钟,而我希望它为 1 分 15 秒。
任何建议将不胜感激!
您可以使用允许您指定精确格式说明符TimeSpan.ParseExact
数组的重载。
var formats = new string[] {@"m\:s", @"\:s", ...};
var timeSpace = TimeSpan.ParseExact(input, formats, CultureInfo.CurrentCulture);
请注意,ParseExact
在 .Net 4 中引入
参数字符串需要采用下面指定的特定格式:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
所以“1:15”将被视为hh:mm。如果您超过 1 分 15 秒,则需要将参数字符串重新格式化为"00:01:15"
. 您可以简单地将字符串拆分为相应的天、小时、分钟、ss 变量,并使用这些变量来分配您的 TimeSpan 对象。
MSDN 在这里有很好的文档: