计算asp.net c#的总小时数

时间:2012-02-21 09:29:26

标签: c# timespan

我已经完成了以下一段代码来添加小时数,从而计算总小时数。

   string hour1="48.40";
   string hour2 = "45.35";

    TimeSpan ts = new TimeSpan(int.Parse(hour1.Split('.')[0]),int.Parse(hour1.Split('.')[1]),
                       0);
    TimeSpan ts1 = new TimeSpan(int.Parse(hour2.Split('.')[0]),int.Parse(hour2.Split('.')[1]),
               0);

    Double total = (ts.TotalHours) + (ts1.TotalHours);

此处的问题是,当我添加hour1hour2total来自 64.25 ,实际应该是 64.15

这只是一个测试用例,如果我把hour1 = 40.00 hour2 = 40.10而不是总数中的值为 80.166666666666657 < / em>实际应该是 80.10

任何人都可以帮助我了解我做错了什么,添加HOUR并获得总小时数的正确方法是什么?

3 个答案:

答案 0 :(得分:3)

实际上,你得到的结果是正确的 - 只需混合分钟和小时数。

80小时10分钟是80 1/6小时

64小时15分钟是64 1/4小时

答案 1 :(得分:2)

当你将时间戳放入字符串时会有点奇怪。但是如果你需要像这样做,这段代码应该可行

string hour1="48.40";
string hour2 = "45.35";

//find total number of minutes for each hour above  
int minutes1 = int.Parse(hour1.Split('.')[0])*60+int.Parse(hour1.Split('.')[1]);
int minutes2 = int.Parse(hour2.Split('.')[0])*60+int.Parse(hour2.Split('.')[1]);

//calculate back to hours and minutes and reassemble as a string
string result = (minutes1+minutes2)/60+"."+(minutes1+minutes2)%60;

我希望你在上面的例子中期待 94.15 而不是 64.15

答案 2 :(得分:0)

您可以使用下一个代码来获得您想要的结果:

string hour1 = "48.40";
string hour2 = "45.35";

TimeSpan ts = new TimeSpan(int.Parse(hour1.Split('.')[0]), int.Parse(hour1.Split('.')[1]),
                               0);
TimeSpan ts1 = new TimeSpan(int.Parse(hour2.Split('.')[0]), int.Parse(hour2.Split('.')[1]),
                       0);

TimeSpan total = ts + ts1;

int hours = (int)total.TotalHours;

int minutes = total.Minutes;