Datum i vrijeme
Funkcije skripte TapHome za datum i vrijeme — NOW, DATETIME, DATETIMEADD, TIMESPAN i LOCALTIMEZONE — i svojstva vrijednosti datetime i timespan.
Funkcije za datum i vrijeme stvaraju vrijednosti datetime (trenutak u vremenu) i vrijednosti timespan (trajanje). Rade u svakoj skripti — smart rules, obavijesti, Modbus i Packet parser — i koriste vremensku zonu centralne jedinice. Sve funkcije na ovoj stranici trebaju Core 2022.2 ili noviji.
NOW
NOW vraća trenutačni datum i vrijeme centralne jedinice kao vrijednost datetime — zadano lokalno vrijeme, UTC s NOW(Utc).
| |
| Naziv | Tip | Opis |
|---|---|---|
kind | DateTimeKind, neobavezno | Local (zadano) ili Utc. NOW(DateTimeKind.Utc) isto je što i NOW(Utc). |
Napomene — Svojstvo se ne može čitati izravno iz poziva funkcije: NOW().HOUR se odbija pri spremanju skripte. Vrijednost najprije spremite u varijablu.
Primjer
VAR now := NOW();
now.HOUR;
# Result: the current hour, 0 to 23Vidi također — DATETIME, Svojstva vrijednosti datetime.
DATETIME
DATETIME stvara vrijednost datetime iz njezinih dijelova, iz teksta ili iz broja milisekundi; pozvan bez argumenata vraća 1.1.0001 00:00, a ne trenutačno vrijeme — za to koristite NOW.
| |
| Naziv | Tip | Opis |
|---|---|---|
year, month, day | broj | Obavezni zajedno. Izostavljeni dijelovi vremena su 0. |
hour … millisecond | broj, neobavezno | Vrijeme u danu. |
kind | DateTimeKind, neobavezno | Local (zadano) ili Utc. |
text | string | Datum i vrijeme kao tekst. |
format | string, neobavezno | .NET format teksta text, na primjer "dd.MM.yyyy HH:mm". |
milliseconds | broj | Milisekunde od 1.1.0001 — mjerilo svojstva TICKS, a ne Unix vrijeme. |
Napomene
- Tekst bez formata čita se prema jezičnim postavkama centralne jedinice. Koristite ISO 8601 (
"2026-01-15T08:30:00") ili zadajte format kako rezultat ne bi ovisio o njima. - Tekst s pomakom ili sa
Z("2026-01-15T08:30:00Z") zadržava se kao vrijednost UTC. Kada jekindpostavljen naUtc, tekst bez podatka o zoni čita se kao UTC. - Za Unix vrijeme postavite svojstvo UNIXTIME.
Primjer
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 vraća novu vrijednost datetime pomaknutu za zadani broj godina, mjeseci, dana, sati, minuta, sekundi i milisekundi; negativni brojevi pomiču je unatrag.
| |
Napomene — Izvorna vrijednost se ne mijenja. Dodavanje mjeseca 31. siječnja daje posljednji dan veljače. Za dodavanje intervala možete koristiti i + s vrijednošću timespan ili s brojem milisekundi.
Primjer
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 stvara vrijednost timespan — trajanje — iz milisekundi ili iz dana, sati, minuta, sekundi i milisekundi.
| |
Svojstva (samo za čitanje)
| Svojstvo | Značenje |
|---|---|
DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS | Jedna sastavnica trajanja (HOURS je 0 – 23). |
TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDS | Cijelo trajanje u toj jedinici, s decimalnim dijelom. |
Napomene
- Postoje samo oblici s 1 i s 5 argumenata; 2 do 4 argumenta zaustavljaju skriptu.
timespan ± timespandajetimespan,datetime ± timespandajedatetime.- Oduzimanje dviju vrijednosti
datetimenije definirano. Za vrijeme između dvaju datuma oduzmite njihoveTICKS(milisekunde). - Deklaracija varijable ključnom riječi tipa
timespantreba Core 2023.2 ili noviji.
Primjer
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)Pogreške — TIMESPAN Unsupported number of parameters; Operator ‘-’ not defined for ‘DateTime’ and ‘DateTime’.
LOCALTIMEZONE
LOCALTIMEZONE vraća trenutačni pomak vremenske zone centralne jedinice od UTC-a u milisekundama, uključujući ljetno računanje vremena.
| |
Primjer
LOCALTIMEZONE() / 3600000;
# Result: 1 in Central European winter time, 2 in summer timeSvojstva vrijednosti datetime
Vrijednost datetime ima ova svojstva. Čitajte ih iz varijable, a ne iz poziva funkcije.
| Svojstvo | Čitanje | Pisanje | Napomena |
|---|---|---|---|
TICKS | ✓ | ✓ | Milisekunde od 1.1.0001. |
YEAR, MONTH, DAY | ✓ | ✓ | Pisanje provjerava raspon (MONTH 1 – 12, DAY 1 – posljednji dan u mjesecu). |
HOUR, MINUTE, SECOND, MILLISECOND | ✓ | ✓ | Rasponi 0 – 23, 0 – 59, 0 – 59, 0 – 999. |
DAYOFWEEK | ✓ | Vrijednost DayOfWeek (Monday … Sunday). | |
DAYOFYEAR | ✓ | 1 – 366. | |
KIND | ✓ | ✓ | DateTimeKind: Local, Utc ili Unspecified. |
UTCDATETIME, LOCALDATETIME | ✓ | Isti trenutak pretvoren prema vremenskoj zoni centralne jedinice. | |
UNIXTIME | ✓ | ✓ | Sekunde od 1.1.1970 UTC. Pisanje sprema vrijednost UTC. |
Napomene
- Izvan argumenta funkcije vrijednost enuma piše se s njezinim tipom:
DayOfWeek.Saturday. SamSaturdayje nepoznata varijabla. <,>i=uspoređuju dvije vrijednostidatetimekao trenutke u vremenu, pa se vrijednosti različitogKINDispravno uspoređuju.- Upis vrijednosti izvan raspona zaustavlja skriptu, na primjer Value must between 0-23.
- Bez formata TOSTRING ispisuje
datetimekaoyyyy/MM/dd hh:mm:ss.fff— 12-satni prikaz bez AM ili PM. Zadajte format kao"yyyy-MM-dd HH:mm".
Primjer — bez radnje vikendom
VAR now := NOW();
IF now.DAYOFWEEK = DayOfWeek.Saturday OR now.DAYOFWEEK = DayOfWeek.Sunday
RETURN(0);
END
1;Primjer — datum iz Unix vremenske oznake
datetime d;
d.UNIXTIME := 1767225600;
d.YEAR;
# Result: 2026 (1 January 2026, 00:00 UTC)Vidi također — Nizovi formata, Tipovi podataka.