C#で合計時間を取得する方法、24時間以上になる可能性があります[クローズ]

Dec 18 2020

1ヶ月で労働時間が必要

ex : 7:30 + 8:00 + 6:30 +9:30 its 31:30TimeSpanで31:30試したので答えが必要です

 // 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時間を超える場合)のようになりますが、このようにはしたくありません

私が何か間違ったことをしている場合、またはこれとは異なることをする場合は、私に助けさせてください

回答

1 NathanielWalser Dec 18 2020 at 18:11

これにより、時間と分が分離されます。

// 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");
1 EltonBicalho Dec 18 2020 at 18:37

分を使用して、終了形式を時間で計算してみてください。

このコードはあなたを助けるはずです:

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);
Agrgg Dec 18 2020 at 18:06

TimeSpan.TotalHoursプロパティを使用します。

TimeSpansを使用して算術演算を実行しTimeSpan、結果を取得してから、次のようにそのTotaHoursプロパティを取得できます。

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

totalHours この場合、値は31になります。

DurgeshSingh Dec 18 2020 at 18:49

TimeSpan.Hoursプロパティを使用して:

//ティック数の多いTimeSpan値を作成します。Console.Write( "\ n {0、-45}"、 "TimeSpan(111222333444555)"); ShowTimeSpanProperties(new TimeSpan(111222333444555));

Console.WriteLine( "{0、-12} {1,8} {2、-18} {3,21:N3}"、 "時間"、interval.Hours、 "TotalHours"、interval.TotalHours);

ソース: https://docs.microsoft.com/en-us/dotnet/api/system.timespan.hours?view=net-5.0