---
title: "Dátum a čas"
description: "Dátum a čas v skripte TapHome: aktuálny čas cez NOW, zostavenie dátumu cez DATETIME, pripočítanie dní či hodín, trvanie cez TIMESPAN, posun časového pásma a Unix čas."
url: "https://taphome.com/sk/docs/script/date-and-time/"
language: sk
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["date-time","timespan","timezone","scripting-language"]
  questions: ["Ako pracovať s dátumom a časom v skriptoch TapHome?","Ako vytvorím objekt DateTime v TapHome?","Ako získam aktuálny dátum a čas v skripte TapHome?","Ako vyjadrím trvanie pomocou TIMESPAN?","Ako pripočítam alebo odpočítam čas od DateTime pomocou DATETIMEADD?","Ako zistím posun miestneho časového pásma v TapHome?","Aké vlastnosti má objekt DateTime?","Ako v skripte zistím, či je dnes víkend?","Ako v skripte TapHome prevediem Unix časovú pečiatku na dátum?","Ako vypočítam počet minút medzi dvoma dátumami?"]
---

# Dátum a čas

Funkcie skriptu TapHome pre dátum a čas — NOW, DATETIME, DATETIMEADD, TIMESPAN a LOCALTIMEZONE — a vlastnosti hodnôt datetime a timespan.

Posledná aktualizácia: 2026-11-06

Funkcie pre dátum a čas vytvárajú hodnoty `datetime` (okamih v čase) a `timespan` (trvanie). Fungujú v každom skripte — v smart rules, notifikáciách, Modbus aj Packet parser skriptoch — a používajú časové pásmo riadiacej jednotky. Všetky funkcie na tejto stránke potrebujú Core 2022.2 alebo novší.

## NOW

`NOW` vráti aktuálny dátum a čas riadiacej jednotky ako hodnotu `datetime` — predvolene v miestnom čase, s `NOW(Utc)` v UTC.

```text
NOW()
NOW(kind)
```

| Názov | Typ | Popis |
|---|---|---|
| `kind` | `DateTimeKind`, voliteľný | `Local` (predvolené) alebo `Utc`. `NOW(DateTimeKind.Utc)` je to isté ako `NOW(Utc)`. |

**Poznámky** — Vlastnosť sa nedá čítať priamo z volania funkcie: `NOW().HOUR` sa pri uložení skriptu odmietne. Hodnotu najprv uložte do premennej.

**Príklad**

```taphome
VAR now := NOW();
now.HOUR;
# Result: the current hour, 0 to 23
```

**Pozrite aj** — [DATETIME](https://taphome.com/sk/docs/script/date-and-time/#datetime), [Vlastnosti hodnôt datetime](https://taphome.com/sk/docs/script/date-and-time/#datetime-properties).

## DATETIME

`DATETIME` vytvorí hodnotu `datetime` z jednotlivých častí, z textu alebo z počtu milisekúnd; bez argumentov vráti 1.1.0001 00:00, nie aktuálny čas — na ten slúži [NOW](https://taphome.com/sk/docs/script/date-and-time/#now).

```text
DATETIME(year, month, day [, hour [, minute [, second [, millisecond [, kind]]]]])
DATETIME(text [, format])
DATETIME(text, kind)
DATETIME(milliseconds [, kind])
DATETIME()
```

| Názov | Typ | Popis |
|---|---|---|
| `year`, `month`, `day` | číslo | Zadávajú sa iba spolu. Vynechané časti času sú 0. |
| `hour` … `millisecond` | číslo, voliteľný | Čas dňa. |
| `kind` | `DateTimeKind`, voliteľný | `Local` (predvolené) alebo `Utc`. |
| `text` | reťazec | Dátum a čas ako text. |
| `format` | reťazec, voliteľný | .NET formát textu `text`, napríklad `"dd.MM.yyyy HH:mm"`. |
| `milliseconds` | číslo | Milisekundy od 1.1.0001 — škála vlastnosti `TICKS`, nie Unix čas. |

**Poznámky**

- Text bez formátu sa číta podľa jazykových nastavení riadiacej jednotky. Aby výsledok od nich nezávisel, použite ISO 8601 (`"2026-01-15T08:30:00"`) alebo zadajte formát.
- Text s posunom alebo so `Z` (`"2026-01-15T08:30:00Z"`) sa uloží ako hodnota v UTC. Keď je `kind` nastavený na `Utc`, text bez údaja o časovom pásme sa číta ako UTC.
- Pre Unix čas nastavte [vlastnosť UNIXTIME](https://taphome.com/sk/docs/script/date-and-time/#datetime-properties).

**Príklad**

```taphome
# dátum z častí: rok, mesiac, deň, čas
VAR start := DATETIME(2026, 1, 15, 8, 30, 0);
# dátum z textu ISO 8601 a z textu s formátom
VAR iso := DATETIME("2026-01-15T08:30:00");
VAR custom := DATETIME("15.01.2026 08:30", "dd.MM.yyyy HH:mm");
# dátum z častí, označený ako UTC
VAR utc := DATETIME(2026, 1, 15, 8, 30, 0, 0, DateTimeKind.Utc);
# minúta spracovaného dátumu
custom.MINUTE;
# Result: 30
```

## DATETIMEADD

`DATETIMEADD` vráti novú hodnotu `datetime` posunutú o zadaný počet rokov, mesiacov, dní, hodín, minút, sekúnd a milisekúnd; záporné čísla ju posunú späť.

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

**Poznámky** — Pôvodná hodnota sa nezmení. Pripočítanie mesiaca k 31. januáru dá posledný deň februára. Interval sa dá pripočítať aj operátorom `+` s hodnotou [timespan](https://taphome.com/sk/docs/script/date-and-time/#timespan) alebo s počtom milisekúnd.

**Príklad**

```taphome
# aktuálny čas riadiacej jednotky
VAR now := NOW();
# o deň dopredu, o dve hodiny späť
VAR tomorrow := DATETIMEADD(now, 0, 0, 1);
VAR twoHoursAgo := DATETIMEADD(now, 0, 0, 0, -2);
# o mesiac po 31. januári
VAR endOfFebruary := DATETIMEADD(DATETIME(2026, 1, 31), 0, 1);
# deň výsledku
endOfFebruary.DAY;
# Result: 28
```

## TIMESPAN

`TIMESPAN` vytvorí hodnotu `timespan` — trvanie — buď z milisekúnd, alebo z dní, hodín, minút, sekúnd a milisekúnd.

```text
TIMESPAN(milliseconds)
TIMESPAN(days, hours, minutes, seconds, milliseconds)
```

**Vlastnosti** (iba na čítanie)

| Vlastnosť | Význam |
|---|---|
| `DAYS`, `HOURS`, `MINUTES`, `SECONDS`, `MILLISECONDS` | Jedna zložka trvania (`HOURS` je 0 – 23). |
| `TOTALDAYS`, `TOTALHOURS`, `TOTALMINUTES`, `TOTALSECONDS`, `TOTALMILLISECONDS` | Celé trvanie v danej jednotke, aj s desatinnou časťou. |

**Poznámky**

- Existujú iba formy s 1 a s 5 argumentmi; 2 až 4 argumenty zastavia skript.
- `timespan ± timespan` dá `timespan`, `datetime ± timespan` dá `datetime`.
- Odčítanie dvoch hodnôt `datetime` nie je definované. Čas medzi dvoma dátumami získate odčítaním ich `TICKS` (milisekúnd).
- Deklarácia premennej kľúčovým slovom typu `timespan` potrebuje Core 2023.2 alebo novší.

**Príklad**

```taphome
VAR t := TIMESPAN(1, 2, 3, 4, 0);
t.TOTALSECONDS;
# Result: 93784
```

```taphome
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)
```

**Chyby** — *TIMESPAN Unsupported number of parameters*; *Operator '-' not defined for 'DateTime' and 'DateTime'*.

## LOCALTIMEZONE

`LOCALTIMEZONE` vráti aktuálny posun časového pásma riadiacej jednotky od UTC v milisekundách, vrátane letného času.

```text
LOCALTIMEZONE()
```

**Príklad**

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

## Vlastnosti hodnôt datetime

Hodnota `datetime` má tieto vlastnosti. Čítajte ich z premennej, nie z volania funkcie.

| Vlastnosť | Čítanie | Zápis | Poznámka |
|---|---|---|---|
| `TICKS` | ✓ | ✓ | Milisekundy od 1.1.0001. |
| `YEAR`, `MONTH`, `DAY` | ✓ | ✓ | Zápis kontroluje rozsah (`MONTH` 1 – 12, `DAY` 1 – posledný deň mesiaca). |
| `HOUR`, `MINUTE`, `SECOND`, `MILLISECOND` | ✓ | ✓ | Rozsahy 0 – 23, 0 – 59, 0 – 59, 0 – 999. |
| `DAYOFWEEK` | ✓ | | Hodnota `DayOfWeek` (`Monday` … `Sunday`). |
| `DAYOFYEAR` | ✓ | | 1 – 366. |
| `KIND` | ✓ | ✓ | `DateTimeKind`: `Local`, `Utc` alebo `Unspecified`. |
| `UTCDATETIME`, `LOCALDATETIME` | ✓ | | Ten istý okamih prepočítaný podľa časového pásma riadiacej jednotky. |
| `UNIXTIME` | ✓ | ✓ | Sekundy od 1.1.1970 UTC. Zápis uloží hodnotu v UTC. |

**Poznámky**

- Mimo argumentu funkcie sa hodnota enumu píše aj so svojím typom: `DayOfWeek.Saturday`. Samotné `Saturday` je neznáma premenná.
- `<`, `>` a `=` porovnávajú dve hodnoty `datetime` ako okamihy v čase, takže hodnoty s rôznym `KIND` sa porovnajú správne.
- Zápis hodnoty mimo rozsahu zastaví skript, napríklad chybou *Value must between 0-23*.
- Bez formátu vypíše [TOSTRING](https://taphome.com/sk/docs/script/data-type-conversions/#tostring) hodnotu `datetime` ako `yyyy/MM/dd hh:mm:ss.fff` — v 12-hodinovom čase bez AM a PM. Zadajte formát, napríklad `"yyyy-MM-dd HH:mm"`.

**Príklad — žiadna akcia cez víkend**

```taphome
# aktuálny čas riadiacej jednotky
VAR now := NOW();
# v sobotu a v nedeľu vráť 0
IF now.DAYOFWEEK = DayOfWeek.Saturday OR now.DAYOFWEEK = DayOfWeek.Sunday
    RETURN(0);
END
# v ostatné dni vráť 1
1;
```

**Príklad — dátum z Unix časovej pečiatky**

```taphome
datetime d;
d.UNIXTIME := 1767225600;
d.YEAR;
# Result: 2026 (1 January 2026, 00:00 UTC)
```

**Pozrite aj** — [Formátovacie reťazce](https://taphome.com/sk/docs/script/data-type-conversions/#format-strings), [Dátové typy](https://taphome.com/sk/docs/script/data-types/).
