Datum und Uhrzeit
Funktionen der TapHome-Skripte für Datum und Uhrzeit — NOW, DATETIME, DATETIMEADD, TIMESPAN und LOCALTIMEZONE — und die Eigenschaften von Werten datetime und timespan.
Funktionen für Datum und Uhrzeit erzeugen Werte datetime (ein Zeitpunkt) und timespan (eine Zeitdauer). Sie funktionieren in jedem Skript — smart rules, Benachrichtigungen, Modbus und Packet Parser — und verwenden die Zeitzone der Steuereinheit. Alle Funktionen auf dieser Seite benötigen Core 2022.2 oder neuer.
NOW
NOW gibt das aktuelle Datum und die aktuelle Uhrzeit der Steuereinheit als Wert datetime zurück — standardmäßig in Ortszeit, mit NOW(Utc) in UTC.
| |
| Name | Typ | Beschreibung |
|---|---|---|
kind | DateTimeKind, optional | Local (Standard) oder Utc. NOW(DateTimeKind.Utc) ist dasselbe wie NOW(Utc). |
Hinweise — Eine Eigenschaft lässt sich nicht direkt aus einem Funktionsaufruf lesen: NOW().HOUR wird beim Speichern des Skripts abgelehnt. Speichern Sie den Wert zuerst in einer Variablen.
Beispiel
VAR now := NOW();
now.HOUR;
# Result: the current hour, 0 to 23Siehe auch — DATETIME, Eigenschaften von Werten datetime.
DATETIME
DATETIME erstellt einen Wert datetime aus seinen Teilen, aus Text oder aus einer Anzahl Millisekunden; ohne Argumente aufgerufen gibt es 1.1.0001 00:00 zurück, nicht die aktuelle Zeit — dafür verwenden Sie NOW.
| |
| Name | Typ | Beschreibung |
|---|---|---|
year, month, day | Zahl | Nur gemeinsam anzugeben. Weggelassene Zeitteile sind 0. |
hour … millisecond | Zahl, optional | Uhrzeit. |
kind | DateTimeKind, optional | Local (Standard) oder Utc. |
text | string | Datum und Uhrzeit als Text. |
format | string, optional | .NET-Format von text, zum Beispiel "dd.MM.yyyy HH:mm". |
milliseconds | Zahl | Millisekunden seit 1.1.0001 — die Skala der Eigenschaft TICKS, keine Unix-Zeit. |
Hinweise
- Text ohne Format wird nach den Spracheinstellungen der Steuereinheit gelesen. Verwenden Sie ISO 8601 (
"2026-01-15T08:30:00") oder geben Sie ein Format an, damit das Ergebnis nicht von ihnen abhängt. - Text mit einem Versatz oder
Z("2026-01-15T08:30:00Z") bleibt ein Wert in UTC. IstkindaufUtcgesetzt, wird Text ohne Zoneninformation als UTC gelesen. - Für Unix-Zeit setzen Sie die Eigenschaft UNIXTIME.
Beispiel
VAR start := DATETIME(2026, 1, 15, 8, 30, 0);
VAR iso := DATETIME("2026-01-15T08:30:00");
VAR custom := DATETIME("15.01.2026 08:30", "dd.MM.yyyy HH:mm");
VAR utc := DATETIME(2026, 1, 15, 8, 30, 0, 0, DateTimeKind.Utc);
custom.MINUTE;
# Result: 30DATETIMEADD
DATETIMEADD gibt einen neuen Wert datetime zurück, verschoben um die angegebene Anzahl Jahre, Monate, Tage, Stunden, Minuten, Sekunden und Millisekunden; negative Zahlen verschieben ihn zurück.
| |
Hinweise — Der ursprüngliche Wert ändert sich nicht. Ein Monat zum 31. Januar addiert ergibt den letzten Tag des Februars. Um ein Intervall zu addieren, können Sie auch + mit einem timespan oder mit einer Anzahl Millisekunden verwenden.
Beispiel
VAR now := NOW();
VAR tomorrow := DATETIMEADD(now, 0, 0, 1);
VAR twoHoursAgo := DATETIMEADD(now, 0, 0, 0, -2);
VAR endOfFebruary := DATETIMEADD(DATETIME(2026, 1, 31), 0, 1);
endOfFebruary.DAY;
# Result: 28TIMESPAN
TIMESPAN erstellt einen Wert timespan — eine Zeitdauer — entweder aus Millisekunden oder aus Tagen, Stunden, Minuten, Sekunden und Millisekunden.
| |
Eigenschaften (nur lesbar)
| Eigenschaft | Bedeutung |
|---|---|
DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS | Ein Bestandteil der Zeitdauer (HOURS ist 0 – 23). |
TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS | Die ganze Zeitdauer in dieser Einheit, mit Nachkommastellen. |
Hinweise
- Es gibt nur die Formen mit 1 und mit 5 Argumenten; 2 bis 4 Argumente brechen das Skript ab.
timespan ± timespanergibt einentimespan,datetime ± timespaneinendatetime.- Die Subtraktion zweier Werte
datetimeist nicht definiert. Für die Zeit zwischen zwei Daten subtrahieren Sie ihreTICKS(Millisekunden). - Die Deklaration einer Variablen mit dem Typ-Schlüsselwort
timespanbenötigt Core 2023.2 oder neuer.
Beispiel
VAR t := TIMESPAN(1, 2, 3, 4, 0);
t.TOTALSECONDS;
# Result: 93784VAR start := DATETIME(2026, 1, 15, 8, 0, 0);
VAR stop := DATETIME(2026, 1, 15, 9, 30, 0);
(stop.TICKS - start.TICKS) / 60000;
# Result: 90 (minutes)Fehler — TIMESPAN Unsupported number of parameters; Operator ‘-’ not defined for ‘DateTime’ and ‘DateTime’.
LOCALTIMEZONE
LOCALTIMEZONE gibt den aktuellen Versatz der Zeitzone der Steuereinheit gegenüber UTC in Millisekunden zurück, einschließlich Sommerzeit.
| |
Beispiel
LOCALTIMEZONE() / 3600000;
# Result: 1 in Central European winter time, 2 in summer timeEigenschaften von Werten datetime
Ein Wert datetime hat diese Eigenschaften. Lesen Sie sie aus einer Variablen, nicht aus einem Funktionsaufruf.
| Eigenschaft | Lesen | Schreiben | Hinweis |
|---|---|---|---|
TICKS | ✓ | ✓ | Millisekunden seit 1.1.0001. |
YEAR, MONTH, DAY | ✓ | ✓ | Beim Schreiben wird der Bereich geprüft (MONTH 1 – 12, DAY 1 – letzter Tag des Monats). |
HOUR, MINUTE, SECOND, MILLISECOND | ✓ | ✓ | Bereiche 0 – 23, 0 – 59, 0 – 59, 0 – 999. |
DAYOFWEEK | ✓ | Wert DayOfWeek (Monday … Sunday). | |
DAYOFYEAR | ✓ | 1 – 366. | |
KIND | ✓ | ✓ | DateTimeKind: Local, Utc oder Unspecified. |
UTCDATETIME, LOCALDATETIME | ✓ | Derselbe Zeitpunkt, umgerechnet mit der Zeitzone der Steuereinheit. | |
UNIXTIME | ✓ | ✓ | Sekunden seit 1.1.1970 UTC. Beim Schreiben wird ein Wert in UTC gespeichert. |
Hinweise
- Außerhalb eines Funktionsarguments wird ein Aufzählungswert mit seinem Typ geschrieben:
DayOfWeek.Saturday. Ein alleinstehendesSaturdayist eine unbekannte Variable. <,>und=vergleichen zwei Wertedatetimeals Zeitpunkte, daher werden auch Werte mit unterschiedlichemKINDkorrekt verglichen.- Das Schreiben eines Werts außerhalb des Bereichs bricht das Skript ab, zum Beispiel mit Value must between 0-23.
- Ohne Format gibt TOSTRING einen
datetimealsyyyy/MM/dd hh:mm:ss.fffaus — im 12-Stunden-Format ohne AM oder PM. Geben Sie ein Format wie"yyyy-MM-dd HH:mm"an.
Beispiel — keine Aktion am Wochenende
VAR now := NOW();
IF now.DAYOFWEEK = DayOfWeek.Saturday OR now.DAYOFWEEK = DayOfWeek.Sunday
RETURN(0);
END
1;Beispiel — Datum aus einem Unix-Zeitstempel
datetime d;
d.UNIXTIME := 1767225600;
d.YEAR;
# Result: 2026 (1 January 2026, 00:00 UTC)Siehe auch — Formatstrings, Datentypen.