Quello che voglio fare è creare un semplice calendario e voglio trovare il primo giorno della prima settimana di un mese specifico. Il mio calendario è un lunedì -> calendario di domenica e il codice seguente funziona, ma come puoi vedere non è bello. Qualcuno ha un'idea migliore su come ottenere la prima data nel calendario.Ricerca del primo giorno del calendario
var now = new DateTime(Year, Month, 1);
now = now.AddDays(1-(int)now.DayOfWeek);
now = now.Day > 15 ? now : now.AddDays(-7);
Il calendario finirà per assomigliare a questo:
| < | Jan 2011 | > |
------------------------------------
| Mo | Tu | We | Th | Fr | Sa | Su |
|[27]| 28 | 29 | 30 | 31 | 01 | 02 |
| 03 | 04 | 05 | 06 | 07 | 08 | 09 |
| .. | .. | .. | .. | .. | .. | .. |
| .. | .. | .. | .. | .. | .. | .. |
| 31 | 01 | 02 | 03 | 04 | 05 | 06 |
E in questa "immagine" è il [27] data che sto cercando di trovare.
Solution (Trovati i meglio/pulitore a ciclo quindi calcolare):
public DateTime FirstDay()
{
var date = new DateTime(Date.Year, Date.Month, 1);
while (true)
{
if (date.DayOfWeek == DayOfWeek.Monday)
return date;
date = date.AddDays(-1);
}
return date;
}
public DateTime LastDay()
{
var date = new DateTime(Date.Year, Date.Month,
DateTime.DaysInMonth(Date.Year, Date.Month));
while (true)
{
if (date.DayOfWeek == DayOfWeek.Sunday)
return date;
date = date.AddDays(1);
}
return date;
}
/BR Andreas
+1, per l'arte ASCII. –
+1 #wow, in realtà ho creato un calendario simile in un'app console con C nel mio college. –