在C#中将时间转换为十进制

时间:2009-12-02 16:53:52

标签: c# time

我需要做的是,有两个由用户输入的定义字符串,

string in = "9:35"; //am
string out = "11:55"; //am

我需要减去它们,以便获得它们签署的总小时数。它应该相等:

string total = "2:20"

然后,我需要将其转换为小数..所以,2:20将是

string decimal = "2.33";

我不知道该怎么做,任何帮助都会受到赞赏!

P.S:id也喜欢能够计算从十进制数中检入的总小时数,所以基本上相反

4 个答案:

答案 0 :(得分:28)

DateTime dt1 = DateTime.Parse("11:55");    
DateTime dt2 = DateTime.Parse("9:35");

double span = (dt1 - dt2).TotalHours;

你真的需要“2:20”还是只是一个中间步骤?

编辑:如果你想回去,你只需要做一些数学运算。取小数的余数乘以60,然后舍入。那些将是分钟,所以只需将它们添加到小时。

答案 1 :(得分:12)

或者你可以这样做:

decimal dec = Convert.ToDecimal(TimeSpan.Parse("11:30").TotalHours);
// returns:  11.5

答案 2 :(得分:0)

这个怎么样?

TimeSpan inTime = new TimeSpan(9, 35, 0); //or TimeSpan.Parse("9:35");
TimeSpan outTime = new TimeSpan(11, 55, 0); //or TimeSpan.Parse("11:55");

TimeSpan total = outTime - inTime;

decimal timevalue = total.Hours + (total.Minutes > 0 ? total.Minutes/60 : 0);

string totalString = timevalue.ToString();

答案 3 :(得分:0)

我知道这是一个非常古老的帖子,但是它是Google在寻找将小时和分钟转换为十进制小时的方法时出现的第一个帖子。

在处理超过24小时(例如,在支付期内处理小时)时,这些答案均无效。我这样处理转换:

string HoursWorkedThisWeek = "50:08" 
//50 hours and 8 minutes
string[] a = HoursWorkedThisWeek.Split(new string[] { ":" }, StringSplitOptions.None);
//a[0] contains the hours, a[1] contains the minutes
decHours = Math.Round(Convert.ToDecimal(a[0]) + (Convert.ToDecimal(a[1]) / 60), 2); 
//Result is 50.13