将MM:SS转换为秒

时间:2014-05-15 09:06:39

标签: c#

是否可以将音频持续时间等时间转换为秒?持续时间所采用的格式为数字格式:6:30代表6分30秒。

我试过

TimeSpan.Parse(duration).TotalSeconds

持续时间为6:30但会出现溢出异常。

TimeSpan.Parse能解析这些字符串吗?

编辑:

要根据评论中提出的问题进行更新,格式并不总是MM:SS。如果音频文件的持续时间超过一小时,也可能是HH:MM:SS

2 个答案:

答案 0 :(得分:5)

你可以使用TimeSpan.ParseExact,你需要逃脱冒号:

TimeSpan duration = TimeSpan.ParseExact("6:30", "h\\:mm", CultureInfo.InvariantCulture);
int seconds = (int)duration.TotalSeconds;  // 23400

修改:但您也应该能够使用TimeSpan.Parse

duration = TimeSpan.Parse("6:30", CultureInfo.InvariantCulture);

请注意,最长为24小时。如果时间更长,则需要使用DateTime.ParseExact

但即便这么长时间也没有溢出(正如你所提到的那样)。

string longTime = "23:33:44";
TimeSpan duration = TimeSpan.Parse(longTime, CultureInfo.InvariantCulture);
int seconds = (int)duration.TotalSeconds; // 84824

您甚至可以将多种允许的格式传递给TimeSpan.ParseExact

string[] timeformats = { @"m\:ss", @"mm\:ss", @"h\:mm\:ss" };
duration = TimeSpan.ParseExact("6:30", timeformats, CultureInfo.InvariantCulture);

答案 1 :(得分:2)

简单的字符串操作是另一种方法,仅供参考。我建议使用TimeSpan.ParseExact()方法。

string[] splitDuration = duration.Split(':');

int minutes = Convert.ToInt32(splitDuration[0]);
int seconds = minutes * 60 + Convert.ToInt32(splitDuration[1]);