Je dois déterminer la durée entre deux DateTimes en minutes.C# - Durée entre deux DateTimes en minutes
Cependant, il y a une légère torsion:
- ne comprennent pas le week-end
- compter seulement quelques minutes qui sont 07:00-19:00. par exemple:
[09/30/2010 6:39:00 PM] - [09/30/2010 7:39:00 PM] = 21 Minutes
Je suis juste un moment difficile à venir avec une manière décente de le faire et apprécierait si quelqu'un peut suggérer quelque chose.
Merci.
Edit:
J'ai fini par aller avec la solution de DTB. Un seul cas particulier doit être pris en compte: si l'heure de fin est après 19h00, comptez les minutes entre 7h00 et l'heure de fin réelle.
Voici comment je l'ai modifié:
var minutes = from day in start.DaysInRangeUntil(end)
where !day.IsWeekendDay()
let st = Helpers.Max(day.AddHours(7), start)
let en = (day.DayOfYear == end.DayOfYear ?
end :
Helpers.Min(day.AddHours(19), end)
)
select (en - st).TotalMinutes;
Encore une fois, merci pour l'aide.
@ 0xA3, pas un dup de cette question, car cette question ne répond pas aux jours et heures exclus demandés ici. –
@Kirk - c'est vrai. Le nombre infini de façons d'utiliser TimeSpan avec des règles d'exclusion personnalisées permet de conserver les questions SO pendant encore 10 ans. –
Eh bien, les gens devraient montrer leur fonctionnement, comme ils devaient le faire à l'école. :) –