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".
GFU-Schulungen  [Anzeige]

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

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!