Feedback

C# - Kalenderwochen ab 1. Januar

Veröffentlicht von am 26.09.2008
(1 Bewertungen)
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;
        }
Abgelegt unter Woche, Kalenderwoche.

2 Kommentare zum Snippet

Günther Foidl schrieb am 26.09.2008:
Geht auch einfacher:
 
public static int Kalenderwoche(DateTime datum)
{
Calendar kalender = CultureInfo.CurrentCulture.Calendar;

return kalender.GetWeekOfYear(
datum,
//CalendarWeekRule.FirstFourDayWeek,
CalendarWeekRule.FirstDay,
DayOfWeek.Monday);
}
aleyaley schrieb am 26.09.2008:
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
 

Logge dich ein, um hier zu kommentieren!