Sprache: C#
Dieses Snippet berechnet das Datum des Montags in einer Kalenderwoche im angegebenen Jahr
[b]Hinweis[/b]: um bspws den Sonntag der besagten Woche zu erhalten müssen nur 6 Tage auf das Datum aufgerechnet werden:
[code]DateTime dt = GetMondayDateOfWeek(49, 2012).AddDays(6);[/code]
//using System.Globalization;
private DateTime GetMondayDateOfWeek(int week, int year)
{
int i = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(year, 1, 1), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
if (i == 1) {
return CultureInfo.CurrentCulture.Calendar.AddDays(new DateTime(year, 1, 1), ((week - 1) * 7 - GetDayCountFromMonday(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1))) + 1));
} else {
int x = Convert.ToInt32(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1)));
return CultureInfo.CurrentCulture.Calendar.AddDays(new DateTime(year, 1, 1), ((week - 1) * 7 + (7 - GetDayCountFromMonday(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1)))) + 1));
}
}
//Gibt den Wochentag als Zahl zurück, Montag entspricht 1
private int GetDayCountFromMonday(DayOfWeek dow)
{
switch (dow) {
case DayOfWeek.Monday:
return 1;
case DayOfWeek.Tuesday:
return 2;
case DayOfWeek.Wednesday:
return 3;
case DayOfWeek.Thursday:
return 4;
case DayOfWeek.Friday:
return 5;
case DayOfWeek.Saturday:
return 6;
default:
//Sunday
return 7;
}
}
//using System.Globalization;
private DateTime GetMondayDateOfWeek(int week, int year)
{
int i = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(year, 1, 1), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
if (i == 1) {
return CultureInfo.CurrentCulture.Calendar.AddDays(new DateTime(year, 1, 1), ((week - 1) * 7 - GetDayCountFromMonday(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1))) + 1));
} else {
int x = Convert.ToInt32(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1)));
return CultureInfo.CurrentCulture.Calendar.AddDays(new DateTime(year, 1, 1), ((week - 1) * 7 + (7 - GetDayCountFromMonday(CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(new DateTime(year, 1, 1)))) + 1));
}
}
//Gibt den Wochentag als Zahl zurück, Montag entspricht 1
private int GetDayCountFromMonday(DayOfWeek dow)
{
switch (dow) {
case DayOfWeek.Monday:
return 1;
case DayOfWeek.Tuesday:
return 2;
case DayOfWeek.Wednesday:
return 3;
case DayOfWeek.Thursday:
return 4;
case DayOfWeek.Friday:
return 5;
case DayOfWeek.Saturday:
return 6;
default:
//Sunday
return 7;
}
}
Alte URL:
/snippet/datum-des-montags-einer-woche-berechnen/1655