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

C# 计算asp.net c的总小时数#,c#,timespan,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.S

我已经完成了下面的代码来添加小时数,从而计算总小时数

   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);
这里的问题是,当我添加
hour1
hour2
时,
total
的值为64.25,实际上应该是64.15

这只是一个测试用例,如果我把
hour1
=40.00和
hour2
=40.10,那么总数中的值是80.1666657,实际上应该是80.10


有谁能帮我理解我做错了什么,加上小时数和总小时数的正确方法是什么?

事实上,你得到的结果是正确的——只是混合了分钟数和小时数的小数部分

   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);
80小时10分钟等于80 1/6小时


64小时15分钟等于64 1/4小时

事实上,你得到的结果是正确的——只是将分钟和小时的小数部分混合在一起

   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);
80小时10分钟等于80 1/6小时


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

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

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

将时间戳放入字符串中会有点奇怪。但是,如果您需要这样做,这段代码应该可以工作

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

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

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;

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

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;