FlakT Geschrieben 21. Mai 2009 Geschrieben 21. Mai 2009 Guten Morge zusammen, brauche mal einige Vorschläge zum Thema Datum: Möchte gerne wissen, wie der Tag im Jahr, die Kalenderwoche (Woche im Jahr) sowie der Wochentag (Tag in der Woche) berechnet werden könnte. Gibt da ja tausende Möglichkeiten und irgenwie nichts genaueres oder etwas, was mich anspricht. c++ Zitieren
VaNaTiC Geschrieben 21. Mai 2009 Geschrieben 21. Mai 2009 In vielen Hochsprachen gibt es dazu bereits Funktionen, die Dir diese Informationen zurückliefern. Tag im Jahr: ist ganz einfach. Du addierst einfach alle Tage in der vergangenen vollen Monaten und den des aktuellen Monats. Dafür musst Du nur den Februar als Schaltjahr berücksichtigen. Ein Schaltjahr ist auch ganz einfach: Wenn das Jahr ohne Rest durch 4 teilbar ist. UND zusätzlich wenn es durch 100 teilbar ist MUSS es auch durch 400 teilbar sein. Deshalb ist 1900 kein Schaltjahr und 2000 aber schon. Kalenderwoche: mit dem Tag im Jahr kannst Du auch dessen Kalenderwoche ermitteln. Dabei gilt das KW1 im Jahr immer min 4 Tage des neuen Jahres haben muss, ansonsten wäre das noch KW53 des alten Jahres. Du musst also nur herausfinden, welcher Tag der erste Sonntag ist und dann ermitteln, wieviele Tage bereits dieses Jahr dann schon hatte. Von da ab gehts einfach mittels Integer-Division. Wochentag: Ist nicht so einfach, aber dafür gibt es zwei Varianten: a) in Deiner Hochsprache gibt es eine Möglichkeit (Windows z.B. mittels der Struktur TimeStamp). Oder ganz pragmatisch mit einem Dir bekanntem Referenzdatum das selbst abzuzählen. Dafür brauchst Du nur die AnzahlTageImJahr(jahr), welche ganz einfach sind, wenn man die Schaltjahre berücksichtig. Dann kannst Du vom zu errechnenden Tag ganz einfach vor oder zurückrechnen bis zum Referenzdatum und mittels Integer-Division und Modulo rausfinden, welcher Tag das ist ISO-Week-Day ist Mo=1 .. So=7 Zitieren
FlakT Geschrieben 22. Mai 2009 Autor Geschrieben 22. Mai 2009 Die Idee mit der <ctime> hatte ich auch schon.Versuche im Moment "Day,Month,Year" wie folgt zu setzen: void Date::setDMY() { struct tm *tmS = localtime(&timeT); day = tmS->tm_mday; month = tmS->tm_mon + 1; year = tmS->tm_year + 1900; yday = (tmS->tm_yday + 1); wday = tmS->tm_wday; } Aber das mit der genauen Berechnung ist schon recht interessant. Werde mal weiter an meinem Algorithmus basteln. Aber der Tag im Jahr scheint schonmal zu funktionieren mittels deiner Beschreibung. Bei den Wochen allerdings kommen gigantisch falsche Zahlen raus. :upps :confused: Aber schonmal vielen Dank an VaNaTiC für den Ansatz. Zitieren
FlakT Geschrieben 22. Mai 2009 Autor Geschrieben 22. Mai 2009 Mist, hier gibts ja einen älteren Eintrag über Datumsberechnung. Das tut mir nun aber Leid, das ich nun einen neuen Beitrag aufgemacht habe. Vielleicht versuche ich das dafür mal zusammen zufassen. 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.