我想以秒为单位解析以下输入“10:05”,格式为“minutes:seconds”。所以10:05应该是10 * 60 = 600 + 5 = 605.我怎么能用代码设法做到这一点?
答案 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类的Methods和Properties。这是关于格式化时间字符串的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。