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
-
Denk daran, dass die GetWeekOfYear() buggy ist!
http://www.artiso.com/ProBlog/PermaLink,guid,02aee2cd-15f1-4e6e-9e0f-a56645d1f5c8.aspx
-
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.