是否可以将音频持续时间等时间转换为秒?持续时间所采用的格式为数字格式:6:30
代表6分30秒。
我试过
TimeSpan.Parse(duration).TotalSeconds
持续时间为6:30
但会出现溢出异常。
TimeSpan.Parse
能解析这些字符串吗?
编辑:
要根据评论中提出的问题进行更新,格式并不总是MM:SS
。如果音频文件的持续时间超过一小时,也可能是HH:MM:SS
。
答案 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]);