Devo determinare la durata tra due DateTimes in minuti.C# - Durata tra due DateTimes in minuti
Tuttavia, v'è una leggera torsione:
- esclude fine settimana
- contare solo minuti che sono 7:00-07:00. per esempio:
[09/30/2010 6:39:00 PM] - [09/30/2010 7:39:00 PM] = 21 Minutes
sto solo attraversando un periodo difficile venire con un modo decente per farlo e avrebbe apprezzato se qualcuno può suggerire qualcosa.
Grazie.
Edit:
ho finito per andare con la soluzione di dtb. C'è solo un caso speciale che doveva essere curato: se l'ora di fine è dopo le 19:00, conta i minuti dalle 7:00 all'ora di fine effettiva.
Ecco come ho modificato:
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;
Ancora una volta, grazie per l'aiuto.
@ 0xA3, non un duplicato di tale domanda, perché quella domanda non riguarda i giorni e gli orari esclusi qui richiesti. –
@Kirk: è vero. Il numero infinito di modi per utilizzare TimeSpan con regole di esclusione personalizzate manterrà le domande di SO in corso per altri 10 anni. –
Bene, allora le persone dovrebbero mostrare il loro funzionamento, come se dovessero farlo a scuola. :) –