在C#中将不规则字符串转换为TimeSpan

时间:2013-02-09 04:38:52

标签: c# string parsing timespan

我有以下格式的几个字符串:

  

" 1:15"
  " 45"
  " 1:30:45"

我需要将它们转换为TimeSpan,但是当我使用TimeSpan.Parse中的一些(例如第一个)时,它将它返回为1小时15分钟,我希望它为1分15秒

非常感谢任何建议!

2 个答案:

答案 0 :(得分:5)

您可以使用TimeSpan.ParseExact的重载,允许您指定精确format specifiers的数组。

var formats = new string[] {@"m\:s", @"\:s", ...};
var timeSpace = TimeSpan.ParseExact(input, formats, CultureInfo.CurrentCulture);

请注意,ParseExact是在.Net 4中引入的

答案 1 :(得分:1)

参数字符串必须采用下面指定的特定格式:

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

所以“1:15”将被视为......:mm。如果您通过1分15秒,则需要将参数字符串重新格式化为"00:01:15"。您可以简单地将字符串拆分为相应的days,hour,min,ss变量,并使用它们来分配TimeSpan对象。

MSDN在这里有很好的文档:

http://msdn.microsoft.com/en-us/library/se73z7b9.aspx