Laden...

Berechnung der Vor- und Nach Woche (KW)

Erstellt von Bratwurstexe vor einem Jahr Letzter Beitrag vor einem Jahr 344 Views
Bratwurstexe Themenstarter:in
24 Beiträge seit 2021
vor einem Jahr
Berechnung der Vor- und Nach Woche (KW)

Hallo zusammen ich stehe vor folgenden Problem:

Ich habe 1 Eingabefeld und ich möchte folgende Werte anhand der Eingabe in Feld 2 und 3 realisieren.

Ziel KW: Beispielsweise KW28
daraus möchte ich gerne wissen welches Datum der Vorwoche(KW27) der Mittwoch hat und dieses in Feld 2 ausgeben.
Und in Feld 3 möchte ich das Datum von der Ziel KW vom Dienstag ausgeben.

Beispiel anhand der Kalenderwoche 28
Ziel KW:28
Datum von: 06.07.2022 (Mittwoch der Ziel-VORWOCHE)
Datum bis: 12.07.2022 (Dienstag der Ziel-Woche)

Ziel KW [] (Feld1 textBox1)
Datum von [
] (Feld2 textBox2)
Datum bis [_____________] (Feld3 textBox3)

       [BUTTON BERECHNEN]

Die aktuelle Kalenderwoche habe ich wie folgt ausgerechnet. Das funktioniert soweit auch und er gibt mir die aktuelle Kalenderwoche aus.
Leider finde ich nur nicht heraus wie ich die oben genannte Berechnung herausbekomme.


        private int KalenderWocheBerechnen()
        {
            CultureInfo cultureInfo = new CultureInfo("de-DE");
            Calendar calender = cultureInfo.Calendar;
            int currentWeek = calender.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
            return currentWeek -1; 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var kw = Convert.ToString(KalenderWocheBerechnen());
            label4.Text = "Aktuelle KW: " + kw;
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

4.939 Beiträge seit 2008
vor einem Jahr

Schau dir mal die Methode GetDateFromWeekNumberAndDayOfWeek aus Get date from weeknumber an (das aktuelle Jahr solltest du dann noch als Parameter übergeben 😉.

Bratwurstexe Themenstarter:in
24 Beiträge seit 2021
vor einem Jahr

Danke für deine Antwort!

Damit konnte ich tatsächlich mein Problem lösen.
Besten Dank. War ja doch nicht so kompliziert wie ich dachte 🙂

Ich habe es jetzt wie folgt gelöst:


static DateTime GetDateFromWeekNumberAndDayOfWeek(int weekNumber, int dayOfWeek)
        {
            DateTime jan1 = new DateTime(2022, 1, 1);
            int daysOffset = DayOfWeek.Tuesday - jan1.DayOfWeek;
            DateTime firstMonday = jan1.AddDays(daysOffset);
            var cal = CultureInfo.CurrentCulture.Calendar;
            int firstWeek = cal.GetWeekOfYear(jan1, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

            var weekNum = weekNumber;
            if (firstWeek <= 1)
            {
                weekNum -= 1;
            }
            var result = firstMonday.AddDays(weekNum * 7 + dayOfWeek - 1);
            return result;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var eingabeKW = Convert.ToInt32(textBox1.Text);
            var ausgabeVonMittwoch = Convert.ToString(GetDateFromWeekNumberAndDayOfWeek(eingabeKW, 2));
            var ausgabeDienstag = Convert.ToString(GetDateFromWeekNumberAndDayOfWeek(eingabeKW + 1, 1));

            textBox2.Text = ausgabeVonMittwoch;
            textBox3.Text = ausgabeDienstag;
        }

Eine Frage stellt sich mir jedoch noch:
Wie bekomme ich bei der Ausgabe nur das Datum ohne Uhrzeit. Im moment soeht die Ausgabe so aus: 01.01.2022 00:00:00 würde gerne die Nullen nicht angezeigt bekommen 🙂

2.079 Beiträge seit 2012
vor einem Jahr

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.