57 messaggi dal 01 novembre 2012
Buongiorno,

non trovando degli esempi in rete, sono a chiedere un suggerimento per ricavare il numero delle settimane conoscendo il mese e l'anno.

Auguro che possiate aiutare e fiducioso di un gradito aiuto, saluto.
Domenico.
102 messaggi dal 19 ottobre 2005
dev.to
Se ho capito bene quello che vuoi fare, considerando che conosco il mese e l'anno e voglio calcolare il numero di settimane considerando l'intero mese, io farei in questo modo:

var year = 2022;
var month = 6;
var date = new DateTime(year, month, 1).AddMonths(1).AddDays(-1);
var calendar = new CultureInfo("it-IT").Calendar;
var weekNumber = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);



Spero di essere stato utile.
102 messaggi dal 19 ottobre 2005
dev.to
Rispondendo alla tua domanda mi sono chiesto se non c'è un modo migliore per recuperare l'ultimo giorno del mese ed ho ho fatto una ricerca su Google.
Ho scoperto che in DateTime esiste il metodo statico DaysInMonth che ti restituisce il numero di giorni presenti in un mese.

var lastDay = DateTime.DaysInMonth(2002, 6);


Quindi, il codice che che ti ho scritto nel precedente post è possibile riscriverlo così:

var year = 2022;
var month = 6;
var lastDayOfMonth = DateTime.DaysInMonth(year, month);
var date = new DateTime(year, month, lastDayOfMonth);
var calendar = new CultureInfo("it-IT").Calendar;
var weekNumber = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
57 messaggi dal 01 novembre 2012
Gent.mo santoni,

ringrazio della gentilezza e disponibilità e mi scuso del ritardo che solo ora ho visto l'intervento.

Ho trascritto il codice per conoscere in due Label sia l'ultimo giorno del corrente mese e sia il numero delle settimane.

Considerando che gradirei visualizzare in due Label sia i giorni che le settimane, ho fatto alcune modifiche senza ottenere il risultato e gradirei gentilmente se puoi aiutare nel modificare il codice.

Sia l'anno che il mese l'ho visualizzo con il seguente codice:
Label1.Text = DateTime.Today.ToString("yyyy");  // Anno
Label2.Text = DateTime.Today.ToString("MMMM");  // Mese

Ringrazio anticipatamente e fiducioso, saluto.
Domenico
102 messaggi dal 19 ottobre 2005
dev.to
Stai facendo un po' di confusione.

Per prima cosa DateTime.Today ti restituisce la data corrente e non l'ultimo giorno del mese.

Nelle due Label tu vuoi mostrare il numero di settimana e i giorni trascorsi dall'inizio dell'anno o del mese corrente?
57 messaggi dal 01 novembre 2012
Gent.mo Santoni,

ringrazio della disponibilità e gentilezza.

nelle due Label conosco nella prima l'anno corrente e nella seconda il mese corrente.

Conoscendo questi due fattori gradirei conoscere nella terza Label quante settimane ha il mese.
per es. Label1 = 2022, Label2 = giugno o 06, Label3 = 4 (settimane).

Fiducioso nella risoluzione, auguro buon proseguimento di giornata.
Domenico.
102 messaggi dal 19 ottobre 2005
dev.to
Una soluzione, forse poco elegante, potrebbe essere questa:

var calendar = new CultureInfo("it-IT").Calendar;

var year = 2022;
var month = 5;
var lastDayOfMonth = DateTime.DaysInMonth(year, month);

var d1 = new DateTime(year, month, 1);
var d2 = new DateTime(year, month, lastDayOfMonth);

var weekNumber1 = calendar.GetWeekOfYear(d1, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
var weekNumber2 = calendar.GetWeekOfYear(d2, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

var weeksInMonth = weekNumber2 - weekNumber1;


Bisogna poi capire come si vuole gestire le "mezze settimane" (ad esempio il mese di maggio del 2022).
Modificato da santoni1981 il 29 giugno 2022 09:17 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.