Basic Datum & Zeit - Funktionen


Lokalzeit (CET, MEZ) und Weltzeit (UTC, GMT)


Die international wichtigste Zeitzone ist die → Weltzeit UTC (Universal Time Coordinated, früher GMT). Die UTC ist weltweit eindeutig, verwendet natürlich keine → Sommerzeit (Daylight savings) und ist daher die ideale Drehscheibe, um Daten aus unterschiedlichen Zonen zu verwalten.
In professionelen (Datenbank)-Anwendungen werden Zeit-Daten ausschließlich in Weltzeit UTC verwaltet.

Nur mit UTC-Daten werden z.B. Differenzen beliebiger Zeit-Daten (auch über → Zeitzonen- und Sommerzeit-Grenzen hinweg) korrekt berechnet.


 AB
1CET (MEZ)=JETZT()2017-10-17 17:10:47
2TZOh22
3UTC (GMT)=B1-B2/242017-10-17 15:10:47
4CET (MEZ)=B3+B2/242017-10-17 17:10:47
Die Zellen B1:B4 werden hier doppelt dargestellt: Links die Formel, rechts die aktuellen Werte.



Wenn man nicht nur die aktuelle Zeit umrechnen will, sondern beliebige (auch vergangene oder zukünftige) Daten, dann braucht man dazu die Zeit-Differenzen zu jedem einzelnen Datum. Das überfordert normale AnwenderInnen.
Mit ↓ Basic-Funktionen kann man die Umrechnung von Zeitzonen einfach und zuverlässig durchführen.

Zeitzonen-Umrechnung mit Basic-Funktionen

 AB
11CET (MEZ)=JETZT()2017-10-17 17:10:47
12TZOh=DaTim_GetOffsetHours(B11)2
13UTC (GMT)=DaTim_toUTC(B11)2017-10-17 15:10:47
14CET (MEZ)=DaTim_UTCtoLocal(B13)2017-10-17 17:10:47

• Die Zellen B11:B14 werden hier doppelt dargestellt:
Links die Formel, rechts die aktuellen Werte.
Das Beispiel zeigt, wie man Daten zwischen der → Lokalen Zeitzone (CET) und der → Weltzeit (UTC) mit Basic-Funktionen umrechnen kann.

• Die Umrechnung zwischen CET und UTC wird mit Basic-Funktionen ausgeführt, hier in den Zellen B13:B14.

Die Kenntnis der jeweiligen Zeit-Differenz (TZOh) ist nicht notwendig.
Man kann sie jedoch für jeden Zeitpunkt berechnen, z.B. hier in Zelle B12.


Basic-Anwendung

Die hier vorgestellten Basic-Funktionen geben Zahlen zurück, weil sich der Variablen-Typ 'Date' leider nicht in allen Programm-Versionen gleich verhält.

Man muss daher Datum-und-Zeit-Werte selbst formatieren, z.B.mit dem Format "YYYY‑MM‑TT hh:mm:ss" (im Beispiel die Zellen B11 sowie B13:B14)


Grenzen

Die Basic-Funktionen arbeiten in dieser einfachen Version nur mit einer fix eingestellten lokalen Zeitzone (Standard-Vorgabe CET).
Man kann sie leicht auf beliebige Zeitzonen erweitern, muss dann jedoch die jeweils zu verwendende Zone in jedem Aufruf einer Funktion angeben.

Die Sommerzeit wird nach EU-Regeln berechnet. Andere Staaten (z.B. USA) verwenden teilweise abweichende Regeln, die hier nicht berücksichtigt werden.

Zeitstempel (Timestamp)


Jede Timestamp-Version muss den Anfangs-(Null)-Punkt und die Schrittweite des jeweilgen Zeit-Zählers angeben. Wenn man diese Daten kennt, dann kann man alle Timestamp-Versionen ineinander umrechnen.

Einfache IT-AnwenderInnen verlassen sich auf die korrekte Funktion der von Betriebssystemen und Programmen verwendeten Timestamps und haben mit den Details nichts zu tun.

EntwicklerInnen sollten jedoch die wichtigsten Timestamp-Systeme kennen und berechnen können.


 AB
21CET=JETZT()2017-10-17 17:10:47
22TZOh22
23UTC=B21-B22/242017-10-17 15:10:47
24UNIX Timestamp=(B23-25569)*864001508253047
25Y1900=WERT(B21)43025.715821759
26JD=B23+2415018,52458044.1324884
27CET=B24/86400+25569+B22/24 2017-10-17 17:10:47
28=B26-2415018,5+B22/24

• Die Zellen B21:B28 werden hier doppelt dargestellt:
Links die Formel, rechts die aktuellen Werte.

Timestamp-Berechnung mit Standard-Funktionen

Das Beispiel zeigt die Berechnung von 3 wichtigen Timestamp-Systemen:
→ UNIX‑Timestamp (hier meist mit UTS bezeichnet), → Y1900‑Zeitstempel, → Julianisches Datum (JD)

• Das Y1900‑System (Zelle B25) wird von MS‑Programmen, von allen gängigen Büro-Programmenm und von der Programmiersprache → Basic verwendet. Es beruht auf der lokalen Zeitzone und damit leider auch auf der Sommerzeit.
• Der UNIX‑Timestamp wird auf UNIX, Linux, in Datenbanken und von allen modernen Programmiersprachen verwendet.
• Das Julianische Datum JD wird in Wissenschaft und Technik verwendet.

Voraussetzung: Die jeweilige Differenz zwischen Lokalzeit (CET)
und Weltzeit (UTC) ist (in Zelle B22) richtig eingetragen.


Die Live-Beispiele dieser Seite sind mit der Programmiersprache → Javascript programmiert. Javascript verwendet UNIX-Timestamps in Millisekunden.


Daten im System Y1900 werden ohne besondere Hinweise immer in der jeweiligen lokalen Zeitzone angegeben.
Das und die jeweilige Sommerzeit-Regel muss man beim internationalen Vergleich von Zeit-Daten und auch bei Rechnungen innerhalb der eigenen Zeitzone berücksichtigen, wenn die verwendeten Daten über eine Sommerzeit-Umstellung hinwegreichen.

Das Y1900-System wird von den meisten MS-Programmen verwendet, insbesondere von MS-Office. Auch LibreOffice und OpenOffice verwenden das Y1900-System.



Der besondere Vorteil dieses Systems ist eine kontinierliche Skala von positiven Zahlen über sehr lange Zeiträume.

Das JD-System wird oft verwendet, wenn man genaue Rechnungen über lange Zeitspannen braucht, und wenn lokale und nationale Besonderheiten unerwünscht sind, z.B. in Astronomie, Raumfahrt u.a.

Timestamps mit Basic-Funktionen

 AB
31CET=JETZT()2017-10-17 17:10:47
32UTC=DaTim_toUTC(B31)2017-10-17 15:10:47
33UNIX Timestamp=DaTim_toUTS(B31)1508253047
34Y1900=WERT(B31)43025.715821759
35JD=DaTim_toJD(B31)2458044.1324884
36CET=DaTim_UTStoLocal(B33) 2017-10-17 17:10:47
37=DaTim_UTCtoLocal(B32)
38=DaTim_JDtoLocal(B35)

• Die Zellen B31:B38 werden hier doppelt dargestellt:
Links die Formel, rechts die aktuellen Werte.
Das Beispiel zeigt, wie man Daten einiger wichtiger Timestamps mit Basic-Funktionen umrechnen kann.

• Der Y1900-Timestamp wird von allen gängigen Office-Programmen und von der Programmiersprache Basic verwendet. Daher braucht man dazu keine Rechnung sondern lediglich ein anderes (Zahlen)-Format in Zelle B34
• UNIX- und JD-Timestamps werden mit Basic-Funktionen berechnet.
• Umkehrung: In den Zellen B36:B38 wird jeweils ein Y1900-Timestamp (in Lokalzeit !) berechnet.

Die Kenntnis der jeweiligen Zeit-Differenz (TZOh) ist nicht notwendig.
Rechnungen in Weltzeit UTC sind unabhängig von Zeitzone und
Sommerzeit immer korrekt und weltweit vergleichbar.


Basic-Anwendung

Alle hier vorgestellten Basic-Funktionen geben Zahlen zurück, weil sich der Variablen-Typ 'Date' leider nicht in jeder Programm-Version gleich verhält.

Man muss daher Datum-und-Zeit-Werte selbst formatieren, z.B.mit dem Format "YYYY‑MM‑TT hh:mm:ss" (im Beispiel die Zellen B32 und B36:B38)


Grenzen

Die Basic-Funktionen arbeiten in dieser einfachen Version nur mit einer fix eingestellten lokalen Zeitzone (Standard-Vorgabe CET).
Man kann sie leicht auf beliebige Zeitzonen erweitern, muss dann jedoch die jeweils zu verwendende Zone in jedem Aufruf einer Funktion angeben.