Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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. :rolleyes:

c++

Geschrieben

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

B) 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

Geschrieben

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.

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...