Giocando con le date è uscita questa funzione che calcola la prima o la seconda occorrenza di un dato giorno in un mese.
/// <summary>
/// Calcola la data di prima o seconda occorrenza di un certo giorno
/// </summary>
/// <param name="dataPartenza">Data di partenza per il calcolo</param>
/// <param name="dWeek">Giorno della settimana richiesto</param>
/// <param name="secondaOccorrenza">Seconda Occorrenza</param>
/// <returns></returns>
public static System.DateTime DataOccorrenza(DateTime dataPartenza, System.DayOfWeek dWeek, bool secondaOccorrenza)
{
DateTime resultDateTime = dataPartenza;
int giorno = 1;
if (secondaOccorrenza)
giorno += 7;
resultDateTime = new System.DateTime(dataPartenza.Year,dataPartenza.Month,giorno);
if (resultDateTime.DayOfWeek != dWeek)
{
// calcoliamo la differenza assoluta tra le due posizioni
// giorno richiesto - giorno guida (1 o 8)
// e poi aggiungiamo 7 giorni per toglierli se il valore
// supera il 7 - il valore 7 è impossibile
int x = (int) dWeek - (int) resultDateTime.DayOfWeek + 7;
if (x > 7)
x -= 7;
resultDateTime = resultDateTime.AddDays(x);
}
return resultDateTime;
}
Riferimenti:
Nessun commento:
Posta un commento