Sprache: C#
Zählt die Kalenderwochen des selektierten Jahres. Die erste Kalenderwoche beginnt am 1.1. des Jahres, egal welcher Wochentag das ist, und wird als Kalendewoche 1 gewertet. Es wird ein 2-Dimensionaler Array zurückgegeben,
wobei die 1. Dimension die Kalenderwochen und die 2. Dimension das Datum des jeweiligen Wochentags ist.
Bsp.: [23, 0] = 24. KW Montag; [0, 6] = 1. KW Sonntag
Größe des Arrays: [anzKW, 7]
In dem Array können "llere" Felder entstehen, deshalb muss bei seiner Verwendung darauf geprüft werden.
Wenn ein Feld "leer" ist hat es das Datum "01.01.0001".
public Array getDatesFromWeekInput_absolut() //läuft
{
int year = (int)getyearinput()[0];
int anzKW = System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(year, 12, 31), System.Globalization.CalendarWeekRule.FirstDay, System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek);
DateTime startdate = new DateTime(year,1,1);
DateTime [,] weeksanddates = new DateTime [anzKW, 7];
for (int i = 0; i < anzKW; i++)
{
for (int j = 0; j < 7; j++)
{
DateTime tempdate = startdate;
if (i == 0)
{
if (tempdate.DayOfWeek == DayOfWeek.Monday)
weeksanddates[i, 0] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Tuesday)
weeksanddates[i, 1] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Wednesday)
weeksanddates[i, 2] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Thursday)
weeksanddates[i, 3] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Friday)
weeksanddates[i, 4] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Saturday)
weeksanddates[i, 5] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Sunday)
{
weeksanddates[i, 6] = tempdate;
j = 7;
}
}
else
{
weeksanddates[i, j] = tempdate;
}
if (tempdate.Day == 31 && tempdate.Month == 12)
break; //Abbruch der kompletten Schleife
tempdate = startdate.AddDays(1);
startdate = tempdate;
}
}
return weeksanddates;
}
public Array getDatesFromWeekInput_absolut() //läuft
{
int year = (int)getyearinput()[0];
int anzKW = System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(year, 12, 31), System.Globalization.CalendarWeekRule.FirstDay, System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek);
DateTime startdate = new DateTime(year,1,1);
DateTime [,] weeksanddates = new DateTime [anzKW, 7];
for (int i = 0; i < anzKW; i++)
{
for (int j = 0; j < 7; j++)
{
DateTime tempdate = startdate;
if (i == 0)
{
if (tempdate.DayOfWeek == DayOfWeek.Monday)
weeksanddates[i, 0] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Tuesday)
weeksanddates[i, 1] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Wednesday)
weeksanddates[i, 2] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Thursday)
weeksanddates[i, 3] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Friday)
weeksanddates[i, 4] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Saturday)
weeksanddates[i, 5] = tempdate;
if (tempdate.DayOfWeek == DayOfWeek.Sunday)
{
weeksanddates[i, 6] = tempdate;
j = 7;
}
}
else
{
weeksanddates[i, j] = tempdate;
}
if (tempdate.Day == 31 && tempdate.Month == 12)
break; //Abbruch der kompletten Schleife
tempdate = startdate.AddDays(1);
startdate = tempdate;
}
}
return weeksanddates;
}
Alte URL:
/snippet/kalenderwochen-ab-1-januar/965
Geht auch einfacher:
[code]
public static int Kalenderwoche(DateTime datum)
{
Calendar kalender = CultureInfo.CurrentCulture.Calendar;
return kalender.GetWeekOfYear(
datum,
//CalendarWeekRule.FirstFourDayWeek,
CalendarWeekRule.FirstDay,
DayOfWeek.Monday);
}
[/code]
Hallo, ja, was du gemacht hast ist auch einfach, jedoch benötige ich nicht nur die Kalenderwoche in der das Datum liegt, sondern ich benötige alle Daten die in einer Kalenderwoche liegen, und soweit ich weiß kann man das leider nicht so einfach abfragen. abgesehen davon kenne ich die von dir gezeigte funktion ja auch, da ich sie ja in meinem prog auch benutze. Grüße