我想将我的分钟,秒和数百分钟分成数秒

时间:2013-05-17 12:08:26

标签: c#

我想将时间设置为几分钟到几秒钟,是否有人知道此代码有什么问题? (时间mm:ss,hhss,hh。示例01:12,1072,10秒)

public double timeToSeconds(string TimeToSplit)
{
    string[] Timesplitter = new string[2];
    double minutes;
    double seconds;
    Timesplitter = TimeToSplit.Split(':');

    minutes = double.Parse(Timesplitter[0]);        //double with minutes
    seconds = double.Parse(Timesplitter[1]);        //double with seconds
    if (minutes != 0)
    {
        seconds = seconds + (minutes * 60);
    }
    return seconds;
}

4 个答案:

答案 0 :(得分:7)

您应该使用TimeSpan。这是解析它的一种方法:

TimeSpan ts = TimeSpan.ParseExact("01:12,10", "mm\\:ss\\,ff", null);
double seconds = ts.TotalSeconds;
return seconds; // it's 72.1

答案 1 :(得分:1)

您最好使用DateTime对象而不是使用TimeSpans的TotalSeconds

加倍

答案 2 :(得分:0)

您应该将字符串解析为TimeSpan:

CultureInfo provider = CultureInfo.InvariantCulture;
TimeSpan ts = TimeSpan.ParseExact(TimeToSplit, "mm\\:ss\\,ff", provider);

return ts.TotalSeconds

答案 3 :(得分:0)

问题是您使用逗号作为数字的小数分隔符。您的代码适用于具有使用逗号的语言环境的系统(例如德语);所有其他人都会破坏,因为逗号是千位分隔符。

您可以在运行double.Parse时指定区域设置。一种可能的解决方案是用点替换逗号并使用不变的语言环境:

double.Parse(Timesplitter[1].Replace(',', '.'), CultureInfo.InvariantCulture)

这将允许您使用点或逗号。

话虽如此,使用TimeSpan正如其他人建议的那样绝对是更好的选择。