Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将分钟解析为秒?_C# - Fatal编程技术网

C# 如何将分钟解析为秒?

C# 如何将分钟解析为秒?,c#,C#,我想以秒为单位分析以下输入“10:05”,格式为“分:秒”。所以10:05应该是10*60=600+5=605。如何使用代码完成此操作?只需拆分字符串,解析数字,然后进行计算: string s = "10:05"; var parts = s.Split(':'); int seconds = int.Parse(parts[0]) * 60 + int.Parse(parts[1]); Console.WriteLine(seconds); // 605 在本例中,如果在格式前面添加一

我想以秒为单位分析以下输入“10:05”,格式为“分:秒”。所以10:05应该是10*60=600+5=605。如何使用代码完成此操作?

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

string s = "10:05";

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

Console.WriteLine(seconds); // 605
在本例中,如果在格式前面添加一个小时部分,还可以使用它来解析该格式。然后,您可以使用该属性获得所需的结果:

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

有很多方法可以做到这一点。这里只有一对。如果知道格式总是
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文档的链接。查看TimeSpan类的和。下面是有关格式化时间字符串的详细信息

另一种方法是手动将输入字符串拆分为两部分,并使用
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
类的示例。

@poke很接近,但您要求秒数,因此:

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

返回605。

并验证是否有两个部分。请注意,如果时间跨度超过23:59,“75:05”怎么办?因为问题没有提到小时符号哇,秒?我怎么没注意到+1.我尝试了TimeSpan类,但我不能让它像我想要的那样工作。谢谢,tho。