TimeSpan中的TotalMinutes只有2位小数

时间:2018-02-28 05:15:01

标签: c# timespan

我需要在TimeSpan中获得TotalMinutes只有2位小数,2位小数指的是小数不应超过59的秒数。如果超过,则将添加整数。例如:

1.59

1分59秒,如果这增加一秒,则计为分钟

2.00

我在下面尝试了以下代码:

var a_sec: float = 0.0;
var a_dec: float = 0.0;

a_sec= TimeSpan.Parse(add).TotalMinutes;
a_dec=Math.Round(a_sec,2);

但这不会对我的工作起作用,错误显示: 对象不支持此属性或方法。

2 个答案:

答案 0 :(得分:1)

我想像是

string.Format("{0:0}.{1:00}", Math.Truncate(ts.TotalMinutes), ts.Seconds);

会起作用。

答案 1 :(得分:0)

下面是如何将Minutes in double(小数部分0-99)转换为Real Minutes(小数部分0-59)的示例:

public class Program
{
    public static void Main(string[] args)
    {
        //Your code goes here
        TimeSpan a = TimeSpan.FromMinutes(2);
        TimeSpan b = TimeSpan.FromMinutes(1.95);
        TimeSpan c = TimeSpan.FromMinutes(1.97);
        TimeSpan d = TimeSpan.FromMinutes(1.99);

        Console.WriteLine(GetRealMinutesDouble(a));   // out - 2
        Console.WriteLine(GetRealMinutesDouble(b));   // out - 1,57
        Console.WriteLine(GetRealMinutesDouble(c));   // out - 1,58
        Console.WriteLine(GetRealMinutesDouble(d));   // out - 1,59
    }
    public static double GetRealMinutesDouble(TimeSpan a )
    {
        var aSecondsPart = a.TotalMinutes - Math.Truncate(a.TotalMinutes);// Cut the decimal part which shows the seconds
        var aSecondsPartInRealSeconds = Math.Round(aSecondsPart*60/100*100)/100;// convert them to the interval 0-59
        return Math.Truncate(a.TotalMinutes)+aSecondsPartInRealSeconds;//add them back
    }
}