Christian Kruse: Table -> Kalender

Beitrag lesen

Hallo Gunnar,

In keiner Umgebung rechnest du mit Jahr/Monat/Datum(/Stunde/Minute), sondern immer mit dem Timestamp (Zeitstempel).

Du kennst jedes System so genau, um das beurteilen zu können? Ich würde mir das nicht zutrauen ;)

Um von Timestamp des Sonntags zu dem des folgenden Donnertags (gleiche Uhrzeit) zu kommen, musst du 4 Tage addieren – umgerechnet in Sekunden also 4 × 24 × 60 × 60 bzw. in Millisekunden 4 × 24 × 60 × 60 × 1000.

Das ist falsch. Ein Tag hat (abhängig von Daylight-Saving) zwischen 23 und 25 Stunden, +/- ein paar Sekunden (abhängig von Schaltsekunden). Und genau das ist einer der Gründe, warum man nicht selber mit Sekunden rechnet, sondern die Bibliotheken der Umgebung verwendet, um mit Daten zu rechnen. Die trivial erscheinende Rechnerei mit Daten ist in Wahrheit ziemlich komplex. Und von Schaltjahren und Zeitzonen hab ich ja noch gar nicht angefangen… ;)

Jahr, Monat, Datum, Stunde, Minute sind Dinge, die innerhalb eines Programmes (oder einer Datenbank) nicht vorkommen.

Nee, moderne Date-APIs geben dir Methoden, um einzelne Tage/Monate/... zu addieren. Schau dir z.B. die Date-API von Ruby an:

require 'date'

t = DateTime.now
puts t

# 14 days later
puts t + 14

# 2 months later
puts t >> 2

Für JavaScript gibt es Moment.js. Für PHP verwendet man die DateTime-API. Ruby erweitert mit den Active-Frameworks die API gewaltig, so dass man auch sowas wie Time.now + 2.days schreiben kann. Java bringt eine ähnliche API mit, schau dir z.B. speziell die add-Methode an.

Datums-Berechnungen will man nicht selber machen.

LG,
CK