Comment obtenir le nombre total d'heures en c #, cela peut prendre plus de 24 heures [fermé]

Dec 18 2020

J'ai besoin d' heures de travail totales dans un mois

ex : 7:30 + 8:00 + 6:30 +9:30 its 31:30j'ai besoin d'une réponse comme 31:30j'ai essayé avec 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;
   }

J'obtiens le total comme 1.06: 21: 00 (si plus de 24 heures), je ne veux pas comme ça

Laisse-moi t'aider, si je fais quelque chose de mal ou je ferai autre chose que ça

Réponses

1 NathanielWalser Dec 18 2020 at 18:11

Avec cela, vous obtenez des heures et des minutes séparées:

// 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

Essayez d'utiliser les minutes pour calculer, au format final en heures.

Ce code devrait vous aider:

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

Utilisez la TimeSpan.TotalHourspropriété.

Vous pouvez effectuer des opérations arithmétiques avec TimeSpans pour obtenir un TimeSpanrésultat, puis obtenir sa TotaHourspropriété comme ceci

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

totalHours aura une valeur de 31 dans ce cas.

DurgeshSingh Dec 18 2020 at 18:49

en utilisant la propriété TimeSpan.Hours:

// Crée une valeur TimeSpan avec un grand nombre de graduations. Console.Write ("\ n {0, -45}", "TimeSpan (111222333444555)"); ShowTimeSpanProperties (nouveau TimeSpan (111222333444555));

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

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