Patrick.Karre Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Hallo Forum, ich habe folgendes Problem: Ich habe eine Kalenderwoche im Jahr 2008. Jetzt brauche ich davon das Anfangsdatum (Montag) und Enddatum (Sonntag). Wie bekommen ich dies am besten unter C++ hin? Beste Grüße Patrick Zitieren
Klotzkopp Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Füll eine tm-Struktur mit den Daten des Montags der ersten Kalenderwoche (in diesem Fall der 31.12.2007). Wandle das mit mktime in time_t um. Zu diesem time_t addierst du 7 * (kw -1) * 86400 für den Montag und weitere 6 * 86400 für den Sonntag. Diese beiden Werte kannst du dann mit localtime wieder in tm-Strukturen umwandeln. Zitieren
Patrick.Karre Geschrieben 3. Dezember 2007 Autor Geschrieben 3. Dezember 2007 Ja generell eine gute Idee, aber das ganze sollte vom Jahr unabhängig sein. Ich hatte nur 2008 als Beispielt gegeben. Das heisst, ich kenne den ersten Montag für die folgende Jahre nicht. Wie kann ich die Funktion universeller schreiben? Zitieren
Klotzkopp Geschrieben 3. Dezember 2007 Geschrieben 3. Dezember 2007 Das Datum des Montag KW1 eines beliebigen Jahres kannst du so ermitteln: Ermittle den Wochentag des 1.1. des gewünschten Jahres (mktime -> localtime). Abhängig davon änderst du diesen time_t-Wert: Wochentag des 1. Januar Relative Position des Montag KW1 Sonntag +1 Montag 0 Dienstag -1 Mittwoch -2 Donnerstag -3 Freitag +3 Samstag +2[/code] Wenn der Wochentag 0-basiert mit 0 = Sonntag ist (wie eben bei tm), kannst du die Anzahl der zu addierenden oder subtrahierenden Tage aus dem Wochentag des ersten Januar so ermitteln: Delta_tage = 3 - (wochentag + 2) % 7 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.