我想把我的分、秒、百分成秒、百

本文关键字:百分 我的 | 更新日期: 2023-09-27 18:13:59

我想把时间设置在分钟到秒,有人知道这段代码有什么问题吗?(时间为mm:ss,hhss,hh。使用实例01:12,10 ~ 72,10 seconds)

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;
}

我想把我的分、秒、百分成秒、百

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

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

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

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

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

问题是您使用逗号作为数字的小数分隔符。你的代码在使用逗号的语言环境(例如德语)的系统上工作得很好;其他的都将中断,因为逗号在这里是千位分隔符。

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

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

这将允许你同时使用点或逗号。

话虽这么说,按照其他人的建议使用TimeSpan绝对是更好的选择。