如何使用C#.net将HH:MM:SS转换为几秒钟?

时间:2009-03-25 15:10:37

标签: c# .net datetime

这样做是否有一种整洁的方法,而不是对冒号进行拆分并将每个部分乘以相关数字来计算秒数?

5 个答案:

答案 0 :(得分:67)

看起来像是一个时间跨度。如此简单地解析文本并获得秒数。

string time = "00:01:05";
double seconds = TimeSpan.Parse(time).TotalSeconds;

答案 1 :(得分:20)

您可以在aTimeSpan上使用parse方法。

http://msdn.microsoft.com/en-us/library/system.timespan.parse.aspx

TimeSpan ts = TimeSpan.Parse( "10:20:30" );
double totalSeconds = ts.TotalSeconds;

如果您只想要秒,则TotalSeconds属性返回总秒数,然后使用秒属性

int seconds = ts.Seconds;

秒数返回'30'。 TotalSeconds返回10 * 3600 + 20 * 60 + 30

答案 2 :(得分:10)

TimeSpan.Parse()将解析格式化的字符串。

所以

TimeSpan.Parse("03:33:12").TotalSeconds;

答案 3 :(得分:1)

此代码允许小时和分钟组件是可选的。例如,

“30” - > 24秒
“1:30” - > 90秒
“1:1:30” - > 3690秒

int[] ssmmhh = {0,0,0};
var hhmmss = time.Split(':');
var reversed = hhmmss.Reverse();
int i = 0;
reversed.ToList().ForEach(x=> ssmmhh[i++] = int.Parse(x));                           
var seconds = (int)(new TimeSpan(ssmmhh[2], ssmmhh[1], ssmmhh[0])).TotalSeconds;  

答案 4 :(得分:1)

//Added code to handle invalid strings
string time = null; //"";//"1:31:00";
string rv = "0";
TimeSpan result;
if(TimeSpan.TryParse(time, out result))
{
    rv = result.TotalSeconds.ToString();
}
retrun rv;