我怎样才能解析几分钟到几秒钟?

时间:2015-11-15 17:06:46

标签: c#

我想以秒为单位解析以下输入“10:05”,格式为“minutes:seconds”。所以10:05应该是10 * 60 = 600 + 5 = 605.我怎么能用代码设法做到这一点?

3 个答案:

答案 0 :(得分:3)

只需拆分字符串,解析数字,然后进行计算:

string s = "10:05";

var parts = s.Split(':');
int seconds = int.Parse(parts[0]) * 60 + int.Parse(parts[1]);

Console.WriteLine(seconds); // 605

在这种情况下,您也可以使用TimeSpan.Parse,如果您在其前面添加一小时部分,则可以解析此格式。然后,您可以使用TotalSeconds属性来获得所需的结果:

double seconds = TimeSpan.Parse("00:" + s).TotalSeconds;
Console.WriteLine(seconds); // 605

答案 1 :(得分:1)

有很多方法可以做到这一点。这里只是一对。如果您知道格式始终为mm:ss,那么您可以使用TimeSpan类,ParseExact方法和TotalSeconds属性。这是一个如何做到这一点的例子。

TimeSpan ts = TimeSpan.ParseExact(mytime, "mm:ss", System.Globalization.CultureInfo.InvariantCulture); 
double seconds = ts.TotalSeconds;

如果您有一堆可以显示的不同格式,您可以使用ParseExact并提供多种时间格式。这是一个采用几种格式的例子。

//HH -> 24 hour format always with 2 digits ("08" = 8 hours)
// H -> 24 hour format with as few digits as possible ("8" = 8 hours)
//mm -> minutes always with 2 digits ("08" = 8 minutes)
// m -> minutes with as few digits as possible ("8" = 8 minutes)
//ss -> seconds always with 2 digits ("08" = 8 seconds)
// s -> seconds with as few digits as possible ("8" = 8 seconds)
string[] formats = new string["HH:mm:ss", "H:mm:ss", "mm:ss", "m:ss", "ss", "s"];
TimeSpan ts = TimeSpan.ParseExact(mytime, formats, System.Globalization.CultureInfo.InvariantCulture);
double seconds = ts.TotalSeconds;

这是TimeSpan类的MSDN文档的link。查看TimeSpan类的MethodsProperties。这是关于格式化时间字符串的link

另一种方法是手动将输入字符串拆分为两部分,并使用Convert类将每个部分转换为整数或双精度。

string[] timeparts = mytime.Split(':');
string minstr = timeparts[0];
string secstr = timeparts[1];
int mins = Convert.ToInt32(minstr);
int secs = Convert.ToInt32(secstr);
int seconds = mins * 60 + secs;

以下是Convert类的documentation

答案 2 :(得分:1)

@poke很接近,但你问了几秒钟,因此:

string s= "10:05";
double seconds = TimeSpan.Parse("00:" + s).TotalSeconds;

返回605。