TapHome

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).

1
2
NOW()
NOW(kind)
NazivTipOpis
kindDateTimeKind, neobaveznoLocal (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 23

Vidi 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.

1
2
3
4
5
DATETIME(year, month, day [, hour [, minute [, second [, millisecond [, kind]]]]])
DATETIME(text [, format])
DATETIME(text, kind)
DATETIME(milliseconds [, kind])
DATETIME()
NazivTipOpis
year, month, daybrojObavezni zajedno. Izostavljeni dijelovi vremena su 0.
hour … millisecondbroj, neobaveznoVrijeme u danu.
kindDateTimeKind, neobaveznoLocal (zadano) ili Utc.
textstringDatum i vrijeme kao tekst.
formatstring, neobavezno.NET format teksta text, na primjer "dd.MM.yyyy HH:mm".
millisecondsbrojMilisekunde 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 je kind postavljen na Utc, 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: 30

DATETIMEADD

DATETIMEADD vraća novu vrijednost datetime pomaknutu za zadani broj godina, mjeseci, dana, sati, minuta, sekundi i milisekundi; negativni brojevi pomiču je unatrag.

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

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

TIMESPAN

TIMESPAN stvara vrijednost timespan — trajanje — iz milisekundi ili iz dana, sati, minuta, sekundi i milisekundi.

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

Svojstva (samo za čitanje)

SvojstvoZnačenje
DAYS, HOURS, MINUTES, SECONDS, MILLISECONDSJedna sastavnica trajanja (HOURS je 0 – 23).
TOTALDAYS, TOTALHOURS, TOTALMINUTES, TOTALSECONDS, TOTALMILLISECONDSCijelo trajanje u toj jedinici, s decimalnim dijelom.

Napomene

  • Postoje samo oblici s 1 i s 5 argumenata; 2 do 4 argumenta zaustavljaju skriptu.
  • timespan ± timespan daje timespan, datetime ± timespan daje datetime.
  • Oduzimanje dviju vrijednosti datetime nije definirano. Za vrijeme između dvaju datuma oduzmite njihove TICKS (milisekunde).
  • Deklaracija varijable ključnom riječi tipa timespan treba Core 2023.2 ili noviji.

Primjer

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)

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.

1
LOCALTIMEZONE()

Primjer

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

Svojstva vrijednosti datetime

Vrijednost datetime ima ova svojstva. Čitajte ih iz varijable, a ne iz poziva funkcije.

SvojstvoČitanjePisanjeNapomena
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. Sam Saturday je nepoznata varijabla.
  • <, > i = uspoređuju dvije vrijednosti datetime kao trenutke u vremenu, pa se vrijednosti različitog KIND ispravno uspoređuju.
  • Upis vrijednosti izvan raspona zaustavlja skriptu, na primjer Value must between 0-23.
  • Bez formata TOSTRING ispisuje datetime kao yyyy/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.