Feedback

C# - Datum des Montags einer Woche berechnen

Veröffentlicht von am 28.12.2012
(1 Bewertungen)
Dieses Snippet berechnet das Datum des Montags in einer Kalenderwoche im angegebenen Jahr

Hinweis: um bspws den Sonntag der besagten Woche zu erhalten müssen nur 6 Tage auf das Datum aufgerechnet werden:
DateTime dt = GetMondayDateOfWeek(49, 2012).AddDays(6);
Snippet in VB übersetzen
//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;
	}
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!