怎么把HH:MM:SS转换成小时小数?

时间:2019-01-24 09:28:19

标签: c# format

我有这样的字符串

currentTime = String.Format("{0:00}:{1:00}:{2:00}",ts.Hours, ts.Minutes, ts.Seconds);

如何将其转换为十进制小时? 例如:00:30:00 = 0.5小时 谢谢。

2 个答案:

答案 0 :(得分:1)

使用TimeSpan.TotalHoursMSDN

  

获取以完整小时和小数小时表示的当前TimeSpan结构的值。

using System;

public class Example
{
   public static void Main()
   {
      // Define an interval of 1 day, 15+ hours.
      TimeSpan interval = new TimeSpan(1, 15, 42, 45, 750); 
      Console.WriteLine("Value of TimeSpan: {0}", interval);

      Console.WriteLine("{0:N5} hours, as follows:", interval.TotalHours);
      Console.WriteLine("   Hours:        {0,3}", 
                        interval.Days * 24 + interval.Hours);
      Console.WriteLine("   Minutes:      {0,3}", interval.Minutes);
      Console.WriteLine("   Seconds:      {0,3}", interval.Seconds);
      Console.WriteLine("   Milliseconds: {0,3}", interval.Milliseconds);
   }
}
// The example displays the following output:
//       Value of TimeSpan: 1.15:42:45.7500000
//       39.71271 hours, as follows:
//          Hours:         39
//          Minutes:       42
//          Seconds:       45
//          Milliseconds: 750

代码示例

using System;

public class Program
{
    public static void Main()
    {
        var now = DateTime.Parse("00:30:00");
        var ts = now.TimeOfDay; // ts is your timespan
        Console.WriteLine(ts.TotalHours); // will print 0.5
    }
}

Try it online!

TotalHours是双精度(这是一种十进制)。如果因为需要小数点而需要小数点,则可以执行(decimal)ts.TotalHours。在这样做之前,请花点时间在网上查看双精度和十进制之间的差异,以查看是否确实需要十进制。

答案 1 :(得分:0)

您可以使用TotalHours,以小时为单位的时间加倍。您可以将其转换为十进制。

decimal hours = (decimal) ts.TotalHours;