如何获得c#中的总小时数,可能超过24小时

如何获得c#中的总小时数,可能超过24小时,c#,model-view-controller,timestamp,timespan,C#,Model View Controller,Timestamp,Timespan,我需要一个月的总工作时间 ex:7:30+8:00+6:30+9:30其31:30我需要答案为31:30 我尝试了TimeSpan // create new timespan TimeSpan total = TimeSpan.Zero; // iterate through items foreach (var count in model.Items) { TimeSpan totalDonationSum = TimeSpan.Parse(count.Ho

我需要一个月的总工作时间

ex:7:30+8:00+6:30+9:30其31:30
我需要答案为
31:30
我尝试了TimeSpan

 // create new timespan
  TimeSpan total = TimeSpan.Zero;

 // iterate through items
  foreach (var count in model.Items)
   {
      TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
      total += totalDonationSum;
   }
我得到的总数大约是1.06:21:00(如果超过24小时),我不希望这样

double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;

如果我做错了什么,或者我要做一些与此不同的事情,请让我来帮助您

使用
TimeSpan.TotalHours
属性

您可以使用TimeSpan执行算术运算,以获得
TimeSpan
作为结果,然后获得其
TotaHours
属性,如下所示

double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;

totalHours
在这种情况下的值为31。

使用
TimeSpan.totalHours
属性

您可以使用TimeSpan执行算术运算,以获得
TimeSpan
作为结果,然后获得其
TotaHours
属性,如下所示

double totalHours = (TimeSpan.FromDays(1) + TimeSpan.FromHours(7)).TotalHours;

在这种情况下,
totalHours
的值为31。

使用该值,可以将小时和分钟分开:

// create new timespan
TimeSpan total = TimeSpan.Zero;

// iterate through items
foreach (var count in model.Items)
{
    TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
    total += totalDonationSum;
}

// calculate
int hours = (int)total.TotalHours;
int minutes = total.Minutes;

// display
string time = hours.ToString("00") + ":" + minutes.ToString("00");

这样,您就可以分为几小时和几分钟:

// create new timespan
TimeSpan total = TimeSpan.Zero;

// iterate through items
foreach (var count in model.Items)
{
    TimeSpan totalDonationSum = TimeSpan.Parse(count.Hours);
    total += totalDonationSum;
}

// calculate
int hours = (int)total.TotalHours;
int minutes = total.Minutes;

// display
string time = hours.ToString("00") + ":" + minutes.ToString("00");

尝试使用分钟来计算,以小时为结束格式

此代码应该可以帮助您:

int totalMinutes = 0;
foreach (var count in model.Items)
{
    DateTime totalDonationSum = DateTime.Parse(count.Hours);
    totalMinutes += (totalDonationSum.Hour*60) + totalDonationSum.Minute;
}

TimeSpan span = TimeSpan.FromMinutes(totalMinutes);
string hoursFormatThatYouWant = span.ToString(@"hh\:mm\:ss");

//If you use a console or you can change for MessageBox or Alert :)
Console.WriteLine("Total Hours:" + hoursFormatThatYouWant);

尝试使用分钟来计算,以小时为结束格式

此代码应该可以帮助您:

int totalMinutes = 0;
foreach (var count in model.Items)
{
    DateTime totalDonationSum = DateTime.Parse(count.Hours);
    totalMinutes += (totalDonationSum.Hour*60) + totalDonationSum.Minute;
}

TimeSpan span = TimeSpan.FromMinutes(totalMinutes);
string hoursFormatThatYouWant = span.ToString(@"hh\:mm\:ss");

//If you use a console or you can change for MessageBox or Alert :)
Console.WriteLine("Total Hours:" + hoursFormatThatYouWant);

通过使用TimeSpan.Hours属性:

//创建带有大量刻度的TimeSpan值。 写入(“\n{0,-45}”,“TimeSpan(111222333444555)”; ShowTimeSpan属性(新TimeSpan(111222333444555))

Console.WriteLine(“{0,-12}{1,8}{2,-18}{3,21:N3}”,“小时”, interval.Hours,“TotalHours”,interval.TotalHours)


来源:

通过使用TimeSpan.Hours属性:

//创建带有大量刻度的TimeSpan值。 写入(“\n{0,-45}”,“TimeSpan(111222333444555)”; ShowTimeSpan属性(新TimeSpan(111222333444555))

Console.WriteLine(“{0,-12}{1,8}{2,-18}{3,21:N3}”,“小时”, interval.Hours,“TotalHours”,interval.TotalHours)


来源:

Timespan具有TotalHours属性。在上述代码中,我如何使用?你能帮忙吗,我试过了,但语法错误我想你可能想把时间转换成十进制,因为31:00在Datetime中没有意义,请看这里如何转换成十进制:是的,但如果我得到31:30这样的总小时数,那将是31.5,因此很难理解最终用户数的格式,你做错了什么,是的,可以用不同的方式来做。如果您需要更详细的答案,请参阅并更新问题。Timespan具有TotalHours属性。在上述代码中,我如何使用?你能帮忙吗,我试过了,但语法错误我想你可能想把时间转换成十进制,因为31:00在Datetime中没有意义,请看这里如何转换成十进制:是的,但如果我得到31:30这样的总小时数,那将是31.5,因此很难理解最终用户数的格式,你做错了什么,是的,可以用不同的方式来做。如果您需要更详细的答案,请参阅并更新问题。请查看。请在几分钟内查看。如果我得到02,那么我只得到2,因为我们得到INT,任何其他获取值的替代方法,如28:2到28:02,您可以使用integerValue.ToString(“00”);然后它会用一个前导零来转换它。几分钟后,如果我得到02,那么我得到的是唯一的2,因为我们得到INT,除了得到28:2到28:02这样的值之外,任何其他方法都可以使用integerValue.ToString(“00”);然后它将用前导零进行转换。