Zeit-Funktionen, Zeit-Typen, Format-Schablonen

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
SpiRu
Beiträge: 74
Registriert: 18.09.2012, 23:05
Wohnort: Deutschland.Freiburg

Zeit-Funktionen, Zeit-Typen, Format-Schablonen

Beitrag von SpiRu » 05.10.2012, 18:08

Dies ist zwar nicht direkt ein Programmier-Beispiel, aber sicherlich für den Einen oder Anderen erhellend im Umgang mit Zeit-Funktionen und Variablen.

Hier mal was zum Verständnis,
da die Hilfetexte zum Thema Datum/Zeit und Formate weitgehend falsch und/oder irreführend sind:

Code: Alles auswählen

Funktion:    Ergebnis-Typ des Funktionsaufrufs
ZEIT      -  [Zeit]
DATUM     -  [Datum]        ** mit Uhrzeitkomponente = 00:00:00
UHRZEIT   -  [Uhr]          ** < 24 Stunden (abgerundet auf ohne Rest durch 5 teilbare Sekunden)
Wobei die Typen [Datum] und [Uhr] quasi Untertypen von [Zeit] sind und lediglich zur Auswahl unterschiedlicher Formatschablonen bei der Umwandlung in eine Zeichenkette dienen. Als Formatschablonen werden die unter Windows Regions- und Sprachoptionen eingestellten verwendet.

Code: Alles auswählen

Variable z: [Zeit], d: [Datum], u: [Uhrzeit]
z:= "2012-10-30 14:45:11"
d:= z
u:= z
z,d,u haben jetzt alle den selben Inhalt!

Code: Alles auswählen

s:= z  ** Formatschablone "JJJJ-MM.TT HH.mm.ss
s:= d  ** Formatschablone "JJJJ-MM.TT"
s:= u  ** Formatschablone "HH.mm.ss"
Welche Formatschablone bei der Umwandlung in eine Zeichenkette verwendet wird, hängt vom Typ der Quell-Variablen ab!
Die Unter-Typen [Datum] und [Uhr] sind praktisch nur Hilfskonstruktionen zur formatierten Ausgabe anhand vorgegebener Format-Schablonen, da es in diesem System hier sonst keine anderen Möglichkeiten zur expliziten Ausgabeformat-Steuerung gibt.
  • Was fehlt, ist ein Typ für Zeitdifferenzen, also z.B. der Typ [ZeitDauer], um auch Zeitdifferenzen >= 24 Stunden genau so einfach darstellen zu können. Aber für eine solche Schablone gibt es meines Wissens keine Einstellmöglichkeit in den Windows Regions- und Sprachoptionen. Sonst gäbe es vielleicht auch einen solchen Typ in Homeputer.
Was gerne verwechselt wird:
  • UHRZEIT ist eine Funktion, die einen Wert vom Typ [Uhr] liefert.
    Uhr ist ein defaultmäßig vorhandenes Objekt vom Typ [Zeichen], in dem - falls das Ausführungsintervall nicht geändert wurde - alle 5 Sekunden der Wert des Funktionsaufrufs UHRZEIT (als Zeichenkette!) gespeichert wird. Formatiert gemäß der Windows Formatschablone für die Zeit.
Da alle Zeitwerte ([Zeit], [Datum], [Uhr]) intern durch Gleitkomma- (Real-) Zahlen dargestellt werden, kann man sie Real-Variablen zuweisen, mit diesen rechnen und das Ergebnis ggf. zwecks Ausgabeformatierung wieder einer Zeitvariablen passenden Typs zuweisen. Ein Tag entspricht dabei dem Wert von 1,0.

Wenn man sich die Ergebnisse der Funktionsaufrufe ZEIT und UHRZEIT als Realzahlen mal genauer ansieht, stellt man fest, dass ZEIT die Uhrzeit sogar wesentlich feiner als Sekunden auflöst, während UHRZEIT immer ohne Rest durch 5 teilbare ganze Sekunden liefert. Da die Sekunden dabei abgerundet werden,
gilt stets:

Code: Alles auswählen

DATUM+UHRZEIT <= ZEIT
und wegen der Sekundenbruchteile in ZEIT so gut wie nie:

Code: Alles auswählen

DATUM+UHRZEIT = ZEIT
FHZ 1000 PC, Homeputer Studio V2.0 Rel. 120301
FHT80b-Raumregler, Windows XP (SP3)

Bugs? - Das sind keine Bugs! Das sind Features!

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“