我有这样的字符串
currentTime = String.Format("{0:00}:{1:00}:{2:00}",ts.Hours, ts.Minutes, ts.Seconds);
如何将其转换为十进制小时? 例如:00:30:00 = 0.5小时 谢谢。
答案 0 :(得分:1)
使用TimeSpan.TotalHours
。 MSDN:
获取以完整小时和小数小时表示的当前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
}
}
TotalHours
是双精度(这是一种十进制)。如果因为需要小数点而需要小数点,则可以执行(decimal)ts.TotalHours
。在这样做之前,请花点时间在网上查看双精度和十进制之间的差异,以查看是否确实需要十进制。
答案 1 :(得分:0)
您可以使用TotalHours,以小时为单位的时间加倍。您可以将其转换为十进制。
decimal hours = (decimal) ts.TotalHours;