Aus DateTimePicker Kalenderwoche auslesen!



  • Hallo zusammen!
    stehe vor folgendem Problem!
    in meinem Programm befindet sich ein DateTimePicker! der Benutzer wählt ganz gewöhnlich einen Tag aus und geht auf übernehmen
    nun soll allerdings nicht das genau Datum gespeichert werden sonndern lediglich das Datum in folgendem Format: "KW, YYYY" (Kalenderwoche, Jahr)

    danke im voraus
    lg





  • danke für die schnelle antwort!
    habe in meiner hilfe nachgesehen bin aber nicht in der Lage die GetWeekOfYear Methode auf meinen DateTimePicker zu verknüpfen bzw weiß ich nicht wie ich sie anwenden soll..!
    könntest du mir bitte vl mit einem kleinen bsp-code weiterhelfen?



  • KoJack123 schrieb:

    danke für die schnelle antwort!
    habe in meiner hilfe nachgesehen bin aber nicht in der Lage die GetWeekOfYear Methode auf meinen DateTimePicker zu verknüpfen bzw weiß ich nicht wie ich sie anwenden soll..!
    könntest du mir bitte vl mit einem kleinen bsp-code weiterhelfen?

    /// <summary>
            /// dirty workaround Calendar.GetWeekOfYear-Bug, Monat mit Jahr ausgeben
            /// </summary>
            /// <remarks>
            /// Source: http://www.artiso.com/ProBlog/PermaLink,guid,02aee2cd-15f1-4e6e-9e0f-a56645d1f5c8.aspx
            /// </remarks>
            /// <param name="t">Datum, dessen KW ausgerechnet werden soll</param>
            /// <returns>Jahr/KW des Datums in der Form 200812 (KW 12 des Jahres 2008)</returns>
            public static int GetWeekWithYear(DateTime t)
            {       
    
                //Berechnung in sicheren Bereich verschieben
                if (t.DayOfWeek >= DayOfWeek.Monday && t.DayOfWeek <= DayOfWeek.Wednesday)
                    t = t.AddDays(3);
    
                //Über-/Unterlauf des Jahres ermitteln
                System.Globalization.Calendar c = Application.CurrentCulture.Calendar;
                int week = c.GetWeekOfYear(t, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
                //Unterlauf
                if (week > 50 && c.GetMonth(t) == 1) return (c.GetYear(t) - 1) * 100 + week;
                //Überlauf
                if (week < 2 && c.GetMonth(t) == 12) return (c.GetYear(t) + 1) * 100 + week;
                //Normales Format
                return c.GetYear(t) * 100 + week;
            }
    

    Das Jahr ist mit der KW multipliziert, weil ich dass als SortedList-Schlüssel brauche. Musst es entsprechend ändern.



  • Wenn Du das Datum aus Deinem DateTimePicker lesen/setzen willst dann schau Dir mal dessen Value-Property an.


Anmelden zum Antworten