Sapere in quale settimana ci troviamo

mercoledì 12 marzo 2008 - 14.22

Giovanni_3478 Profilo | Senior Member

Ciao

[VisualStudio2008, C#]

C'è qualche metodo per sapere in quale settimana specifica del mese corrente ci troviamo.

Per esempio oggi 12 Marzo 2008 ci troviamo nella 3°settimana di Marzo.

int nSettimana = Datetime.numberWeek;

C'è qualcosa del genere?

amelix Profilo | Expert

Credo di no...
Cmq io solitamente cerco il nr di settimana dell'ultimo giorno del mese precedente e poi lo sottrai al nr di settimana in cui ti trovi.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

Giovanni_3478 Profilo | Senior Member

Ciao

Ho usato:
int i= myCI.Calendar.GetWeekOfYear(DateTime.Now, System.Globalization.CalendarWeekRule.FirstFourDayWeek, System.DayOfWeek.Sunday);
int h = myCI.Calendar.GetWeekOfYear(DateTime.Now.AddDays(-DateTime.Now.Day ), System.Globalization.CalendarWeekRule.FirstFourDayWeek, System.DayOfWeek.Sunday);
int y = i - h;

y sarà uguale a 2
perchè giustamente facendo la sottrazione del numero di settimane,
il risultato è 2.
Però il conteggio del numero di settimane
fatto in relazione all'anno è un conto,
fatto in relazione al mese è un altro.

Noi attualmente (12 Marzo 2008) ci troviamo nellla settimana 2 o 3?
Io direi 3. Tu?

Non ho capito poi ..:
System.Globalization.CalendarWeekRule.FirstFourDayWeek
Gennaio primo mese dell'anno
comincia con il 1°Gennaio di martedì.
FirstFourDayWeek cosa significa?

amelix Profilo | Expert

>Ho usato:
>int i= myCI.Calendar.GetWeekOfYear(DateTime.Now, System.Globalization.CalendarWeekRule.FirstFourDayWeek,
>System.DayOfWeek.Sunday);
>int h = myCI.Calendar.GetWeekOfYear(DateTime.Now.AddDays(-DateTime.Now.Day
>), System.Globalization.CalendarWeekRule.FirstFourDayWeek, System.DayOfWeek.Sunday);
> int y = i - h;
>
>y sarà uguale a 2
Secondo me 2 è il nr corretto... settimane 2-8 + 9-15... 2
Poi dipende cosa ci devi fare... (Attenzione alle eccezioni delle settimane/mesi perfetti...)

>Noi attualmente (12 Marzo 2008) ci troviamo nellla settimana
>2 o 3?
2 la "0" è cominciata in febbraio...
>Io direi 3. Tu?

>Non ho capito poi ..:
>System.Globalization.CalendarWeekRule.FirstFourDayWeek
>Gennaio primo mese dell'anno
>comincia con il 1°Gennaio di martedì.
>FirstFourDayWeek cosa significa?
Se la settimana iniziale (quella a cavallo dicembre/gennaio) è maggiore/uguale a 4 la conta altrimenti no... puoi anche dirgli di contarla lo stesso... cmq è un dettaglio ininfluente per il calcolo della settimana relativa al mese.


Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

Giovanni_3478 Profilo | Senior Member

Ciao

Nel codice che ho scritto precedentemente
..................................................................
>int h = myCI.Calendar.GetWeekOfYear(DateTime.Now.AddDays(-DateTime.Now.Day
>), System.Globalization.CalendarWeekRule.FirstFourDayWeek, System.DayOfWeek.Sunday);
..................................................................
ho scritto System.DayOfWeek.Sunday;
preferisco che inizi di Lunedì la settimana, quindi System.DayOfWeek.Monday

Se il 1 Marzo fosse di Martedì
la prima settimana sarebbe 6-12 ?
Ho capito bene ?

>(Attenzione alle eccezioni delle settimane/mesi perfetti...)
Es. Settembre 2008: cosa cambia?

Oggi: Mercoledì 12 Marzo 2008
per sapere da codice quando la settimana comincia e quando finisce
(es. nel caso di 12 Marzo inizia il 10 e finisce il 16) :

DateTime data =DateTime.Now;
DayOfWeek giornoSettimana = DateTime.Now.DayOfWeek;
while (giornoSettimana != DayOfWeek.Monday)
{
data = data.AddDays(-1);
giornoSettimana = data.DayOfWeek;
}
int giornoDiInizioSettimana = data.Day;

In pratica sapendo che oggi è mercoledì,
vado prima indietro coi giorni fino ad arrivare a Lunedì
e poi avanti fino ad arrivare a Domenica.
E così conosco il giorno del mese relativo all'inizio della settimana corrente
e il giorno del mese relativo alla fine della settimana corrente.

E' un buon metodo quello che ho usato? Che dici?
Ti viene in mente qualcosa di meglio?

amelix Profilo | Expert

A occhio mi sembra tutto corretto... (mi è piaciata un casino la soluzione del Now.Days per trovare l'ultimo del mese precedente!!! Grande! )

Ovviamente vanno fatti dei test sui casi particolari... ma se fosse facile & ovvio non sarebbe divertente...
Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

Giovanni_3478 Profilo | Senior Member

Grazie mille per l'aiuto.

Ciao
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5