我需要做的是,有两个由用户输入的定义字符串,
string in = "9:35"; //am
string out = "11:55"; //am
我需要减去它们,以便获得它们签署的总小时数。它应该相等:
string total = "2:20"
然后,我需要将其转换为小数..所以,2:20将是
string decimal = "2.33";
我不知道该怎么做,任何帮助都会受到赞赏!
P.S:id也喜欢能够计算从十进制数中检入的总小时数,所以基本上相反
答案 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