Dátum és idő
A TapHome szkript dátum- és időfüggvényei — NOW, DATETIME, DATETIMEADD, TIMESPAN és LOCALTIMEZONE —, valamint a datetime és timespan értékek tulajdonságai.
A dátum- és időfüggvények datetime értékeket (időpont) és timespan értékeket (időtartam) hoznak létre. Minden szkriptben működnek — smart rule-okban, értesítésekben, Modbus és Packet parser integrációban —, és a vezérlőegység időzónáját használják. Az oldalon szereplő összes függvényhez Core 2022.2 vagy újabb verzió szükséges.
NOW
A NOW a vezérlőegység aktuális dátumát és idejét adja vissza datetime értékként — alapértelmezetten helyi időben, a NOW(Utc) hívással UTC szerint.
| |
| Név | Típus | Leírás |
|---|---|---|
kind | DateTimeKind, nem kötelező | Local (alapértelmezett) vagy Utc. A NOW(DateTimeKind.Utc) ugyanaz, mint a NOW(Utc). |
Megjegyzések — tulajdonság nem olvasható közvetlenül egy függvényhívásból: a NOW().HOUR kifejezést a szkript mentésekor elutasítja. Előbb tárold az értéket egy változóban.
Példa
VAR now := NOW();
now.HOUR;
# Result: the current hour, 0 to 23Lásd még — DATETIME, A datetime értékek tulajdonságai.
DATETIME
A DATETIME datetime értéket hoz létre a részeiből, szövegből vagy ezredmásodpercek számából; argumentumok nélkül hívva 1.1.0001 00:00 értéket ad vissza, nem az aktuális időt — arra a NOW függvényt használd.
| |
| Név | Típus | Leírás |
|---|---|---|
year, month, day | szám | Csak együtt adhatók meg. Az elhagyott időrészek értéke 0. |
hour … millisecond | szám, nem kötelező | A nap időpontja. |
kind | DateTimeKind, nem kötelező | Local (alapértelmezett) vagy Utc. |
text | string | Dátum és idő szövegként. |
format | string, nem kötelező | A text .NET formátuma, például "dd.MM.yyyy HH:mm". |
milliseconds | szám | Az 1.1.0001 óta eltelt ezredmásodpercek — a TICKS tulajdonság skálája, nem Unix-idő. |
Megjegyzések
- A formátum nélküli szöveget a vezérlőegység nyelvi beállításai szerint olvassa be. Használj ISO 8601 formátumot (
"2026-01-15T08:30:00"), vagy adj meg formátumot, hogy az eredmény ne függjön ezektől. - Az eltolást vagy
Zjelet tartalmazó szöveg ("2026-01-15T08:30:00Z") UTC értékként marad meg. Ha akindértékeUtc, az időzóna-információ nélküli szöveget UTC szerint olvassa be. - Unix-időhöz állítsd be az UNIXTIME tulajdonságot.
Példa
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
A DATETIMEADD új datetime értéket ad vissza, amelyet a megadott számú évvel, hónappal, nappal, órával, perccel, másodperccel és ezredmásodperccel eltol; a negatív számok visszafelé tolják.
| |
Megjegyzések — az eredeti érték nem változik. Január 31-hez egy hónapot adva február utolsó napját kapod. Intervallum hozzáadásához a + operátort is használhatod egy timespan értékkel vagy ezredmásodpercek számával.
Példa
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
A TIMESPAN timespan értéket — időtartamot — hoz létre, vagy ezredmásodpercekből, vagy napokból, órákból, percekből, másodpercekből és ezredmásodpercekből.
| |
Tulajdonságok (csak olvashatók)
| Tulajdonság | Jelentés |
|---|---|
DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS | Az időtartam egy összetevője (a HOURS értéke 0 – 23). |
TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS | A teljes időtartam az adott egységben, törtrésszel. |
Megjegyzések
- Csak az 1 és az 5 argumentumos alak létezik; 2–4 argumentum leállítja a szkriptet.
- A
timespan ± timespaneredményetimespan, adatetime ± timespaneredményedatetime. - Két
datetimeérték kivonása nincs definiálva. A két dátum között eltelt időhöz aTICKSértékeiket (ezredmásodperceket) vond ki egymásból. - A
timespantípuskulcsszóval történő változódeklarációhoz Core 2023.2 vagy újabb verzió szükséges.
Példa
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)Hibák — TIMESPAN Unsupported number of parameters; Operator ‘-’ not defined for ‘DateTime’ and ‘DateTime’.
LOCALTIMEZONE
A LOCALTIMEZONE a vezérlőegység időzónájának UTC-hez viszonyított aktuális eltolását adja vissza ezredmásodpercben, a nyári időszámítással együtt.
| |
Példa
LOCALTIMEZONE() / 3600000;
# Result: 1 in Central European winter time, 2 in summer timeA datetime értékek tulajdonságai
A datetime érték a következő tulajdonságokkal rendelkezik. Változóból olvasd őket, ne függvényhívásból.
| Tulajdonság | Olvasás | Írás | Megjegyzés |
|---|---|---|---|
TICKS | ✓ | ✓ | Az 1.1.0001 óta eltelt ezredmásodpercek. |
YEAR, MONTH, DAY | ✓ | ✓ | Íráskor ellenőrzi a tartományt (MONTH 1 – 12, DAY 1 – a hónap utolsó napja). |
HOUR, MINUTE, SECOND, MILLISECOND | ✓ | ✓ | Tartományok: 0 – 23, 0 – 59, 0 – 59, 0 – 999. |
DAYOFWEEK | ✓ | DayOfWeek érték (Monday … Sunday). | |
DAYOFYEAR | ✓ | 1 – 366. | |
KIND | ✓ | ✓ | DateTimeKind: Local, Utc vagy Unspecified. |
UTCDATETIME, LOCALDATETIME | ✓ | Ugyanaz az időpont a vezérlőegység időzónájával átszámítva. | |
UNIXTIME | ✓ | ✓ | Az 1970.1.1 UTC óta eltelt másodpercek. Íráskor UTC értéket tárol. |
Megjegyzések
- Függvényargumentumon kívül a felsorolt értéket a típusával együtt kell írni:
DayOfWeek.Saturday. A magában állóSaturdayismeretlen változó. - A
<,>és=kétdatetimeértéket időpontként hasonlít össze, így a különbözőKINDértékű dátumok is helyesen hasonlíthatók össze. - A tartományon kívüli érték írása leállítja a szkriptet, például Value must between 0-23.
- Formátum nélkül a TOSTRING a
datetimeértéketyyyy/MM/dd hh:mm:ss.fffalakban írja ki — 12 órás formátumban, AM vagy PM jelölés nélkül. Adj meg formátumot, például"yyyy-MM-dd HH:mm".
Példa — nincs művelet hétvégén
VAR now := NOW();
IF now.DAYOFWEEK = DayOfWeek.Saturday OR now.DAYOFWEEK = DayOfWeek.Sunday
RETURN(0);
END
1;Példa — dátum Unix időbélyegből
datetime d;
d.UNIXTIME := 1767225600;
d.YEAR;
# Result: 2026 (1 January 2026, 00:00 UTC)Lásd még — Formátumszövegek, Adattípusok.