2013-02-09 83 views
1

我在下面的格式几串:转换不规则字符串时间跨度在C#

“1时15分”
“:45”
“1时三十分45秒”

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

任何意见将不胜感激!

回答

1

在未知字符串需要在下面指定的具体形式:

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

因此,“1:15”,将作为处理HH:MM。如果您传递1分15秒,则需要将参数字符串重新格式化为"00:01:15"。您可以简单地将字符串分割为相应的天,小时,分钟,ss变量并使用它们来分配您的TimeSpan对象。

MSDN这里有很好的文档:

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

+0

哈哈这实际上是我需要摆脱它......像“零时01分15秒”的字符串这就是我所需要的时间跨度为。但是这确实给了我一个关于如何获得这个字符串的想法,所以谢谢! – CCEPROD 2013-02-09 06:52:01

5

你可以使用的TimeSpan.ParseExact过载,它允许您指定的确切format specifiers阵列。

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

注意ParseExact以.Net推出4

+0

谢谢!奇迹般有效 – CCEPROD 2013-02-09 06:51:29