Da un numero della settimana al range di date

martedì 10 febbraio 2009 - 12.51

MANU Profilo | Newbie

Ciao David,
vorrei sapere come si fa a trovare il range di date dal... al ... avendo solo il numero della settimana
es.: settimana numero 36 che settimana corrisponde?

Grazie MANU


ECCO LA SOLUZIONE:
DateTime lunedi = new DateTime();
DateTime domenica = new DateTime();
lunedi = utility.DayOfWeekByWeekNumber(2009, 4, DayOfWeek.Monday);
domenica = utility.DayOfWeekByWeekNumber(2009, 4, DayOfWeek.Sunday);



// dato il nome del giorno della settimana, la funzione restituisce il numero progressivo del giorno nella settimana
// lunedi è il primo, etc..
private static int NumberOfDayInWeek(DayOfWeek DayName)
{
int numero_giorno = 0;
switch (DayName)
{

case DayOfWeek.Monday:
numero_giorno = 1;
break;
case DayOfWeek.Tuesday:
numero_giorno = 2;
break;
case DayOfWeek.Wednesday:
numero_giorno = 3;
break;
case DayOfWeek.Thursday:
numero_giorno = 4;
break;
case DayOfWeek.Friday:
numero_giorno = 5;
break;
case DayOfWeek.Saturday:
numero_giorno = 6;
break;
case DayOfWeek.Sunday:
numero_giorno = 7;
break;

default:
break;
}
return numero_giorno;
}


public static DateTime DayOfWeekByWeekNumber(int Year, int NumberOfWeek, DayOfWeek Giorno_Settimana)
{
int inizio_settimana = 0;
// primo giorno dell'anno è sempre l'1 gennaio
DateTime dt = new DateTime(Year, 1, 1);

// decideo quale numero all'interno della settimana sia il primo gennaio
int numero_gg_residui_settimana_1 = 0;

numero_gg_residui_settimana_1 = NumberOfDayInWeek(dt.DayOfWeek);

// ora calcolo quanti gg fanno parte della prima settimana
inizio_settimana = 7 - numero_gg_residui_settimana_1 + 1;

// ora calcolo quanti gg ci sono dalla seconda settimana di gennaio fino alla settimana richiesta
int gg_mancanti_alla_settimana = (NumberOfWeek - 2) * 7;

// ora calcolo il numero del giorno all'interno dell'anno corrispondente al LUNEDI della settimama richiesta
int gg_inizio_anno = gg_mancanti_alla_settimana + inizio_settimana + NumberOfDayInWeek(Giorno_Settimana) - 1;

// ora calcolo che giorno era il lunedi della settimana richiesta
dt = dt.AddDays(gg_inizio_anno);

DayOfWeek test = dt.DayOfWeek;

if (test == DayOfWeek.Monday)
{
// allora i conti tornano
}

return dt;

}

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5