domenica 24 giugno 2007

Calcolare La prima o la seconda occorrenza di un dato giorno


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:


Esempio C#
Esempio VB.NET

Nessun commento: