TapHome

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.

1
2
NOW()
NOW(kind)
NévTípusLeírás
kindDateTimeKind, 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 23

Lá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.

1
2
3
4
5
DATETIME(year, month, day [, hour [, minute [, second [, millisecond [, kind]]]]])
DATETIME(text [, format])
DATETIME(text, kind)
DATETIME(milliseconds [, kind])
DATETIME()
NévTípusLeírás
year, month, dayszámCsak együtt adhatók meg. Az elhagyott időrészek értéke 0.
hour … millisecondszám, nem kötelezőA nap időpontja.
kindDateTimeKind, nem kötelezőLocal (alapértelmezett) vagy Utc.
textstringDátum és idő szövegként.
formatstring, nem kötelezőA text .NET formátuma, például "dd.MM.yyyy HH:mm".
millisecondsszámAz 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 Z jelet tartalmazó szöveg ("2026-01-15T08:30:00Z") UTC értékként marad meg. Ha a kind értéke Utc, 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: 30

DATETIMEADD

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.

1
DATETIMEADD(datetime, years [, months [, days [, hours [, minutes [, seconds [, milliseconds]]]]]])

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: 28

TIMESPAN

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.

1
2
TIMESPAN(milliseconds)
TIMESPAN(days, hours, minutes, seconds, milliseconds)

Tulajdonságok (csak olvashatók)

TulajdonságJelentés
DAYS, HOURS, MINUTES, SECONDS, MILLISECONDSAz időtartam egy összetevője (a HOURS értéke 0 – 23).
TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDSA 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 ± timespan eredménye timespan, a datetime ± timespan eredménye datetime.
  • Két datetime érték kivonása nincs definiálva. A két dátum között eltelt időhöz a TICKS értékeiket (ezredmásodperceket) vond ki egymásból.
  • A timespan tí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: 93784
VAR 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.

1
LOCALTIMEZONE()

Példa

LOCALTIMEZONE() / 3600000;
# Result: 1 in Central European winter time, 2 in summer time

A 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ágOlvasásÍrásMegjegyzé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ó Saturday ismeretlen változó.
  • A <, > és = két datetime é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éket yyyy/MM/dd hh:mm:ss.fff alakban í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.