---
title: "Datum a čas"
description: "Datum a čas ve skriptu TapHome: aktuální čas pomocí NOW, sestavení data pomocí DATETIME, přičtení dnů nebo hodin, doby trvání pomocí TIMESPAN, posun časového pásma a Unixový čas."
url: "https://taphome.com/cs/docs/script/date-and-time/"
language: cs
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["date-time","timespan","timezone","scripting-language"]
  questions: ["Jak ve skriptech TapHome pracovat s datem a časem?","Jak v TapHome vytvořit hodnotu DateTime?","Jak ve skriptu TapHome získat aktuální datum a čas?","Jak pomocí TIMESPAN vyjádřit dobu trvání?","Jak pomocí DATETIMEADD přičíst nebo odečíst čas od DateTime?","Jak v TapHome zjistit posun místního časového pásma?","Jaké vlastnosti má hodnota DateTime?","Jak ve skriptu ověřit, zda je dnes víkend?","Jak ve skriptu TapHome převést Unixové časové razítko na datum?","Jak spočítat počet minut mezi dvěma daty?"]
---

# Datum a čas

Funkce skriptu TapHome pro datum a čas — NOW, DATETIME, DATETIMEADD, TIMESPAN a LOCALTIMEZONE — a vlastnosti hodnot datetime a timespan.

Poslední aktualizace: 2026-11-06

Funkce pro datum a čas vytvářejí hodnoty `datetime` (okamžik v čase) a `timespan` (doba trvání). Fungují v každém skriptu — ve smart rules, oznámeních, Modbus i Packet parser — a používají časové pásmo řídicí jednotky. Všechny funkce na této stránce vyžadují Core 2022.2 nebo novější.

## NOW

`NOW` vrátí aktuální datum a čas řídicí jednotky jako hodnotu `datetime` — výchozí je místní čas, UTC pomocí `NOW(Utc)`.

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

| Název | Typ | Popis |
|---|---|---|
| `kind` | `DateTimeKind`, nepovinný | `Local` (výchozí) nebo `Utc`. `NOW(DateTimeKind.Utc)` je totéž jako `NOW(Utc)`. |

**Poznámky** — Vlastnost nelze číst přímo z volání funkce: `NOW().HOUR` je odmítnuto při uložení skriptu. Hodnotu nejprve uložte do proměnné.

**Příklad**

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

**Viz také** — [DATETIME](https://taphome.com/cs/docs/script/date-and-time/#datetime), [Vlastnosti hodnot datetime](https://taphome.com/cs/docs/script/date-and-time/#datetime-properties).

## DATETIME

`DATETIME` vytvoří hodnotu `datetime` z jejích částí, z textu nebo z počtu milisekund; bez argumentů vrátí 1.1.0001 00:00, ne aktuální čas — k tomu slouží [NOW](https://taphome.com/cs/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ázev | Typ | Popis |
|---|---|---|
| `year`, `month`, `day` | number | Povinné společně. Vynechané části času jsou 0. |
| `hour` … `millisecond` | number, nepovinný | Denní čas. |
| `kind` | `DateTimeKind`, nepovinný | `Local` (výchozí) nebo `Utc`. |
| `text` | string | Datum a čas jako text. |
| `format` | string, nepovinný | Formát .NET pro `text`, například `"dd.MM.yyyy HH:mm"`. |
| `milliseconds` | number | Milisekundy od 1.1.0001 — měřítko vlastnosti `TICKS`, ne Unixový čas. |

**Poznámky**

- Text bez formátu se čte podle jazykového nastavení řídicí jednotky. Použijte ISO 8601 (`"2026-01-15T08:30:00"`) nebo zadejte formát, aby výsledek na nastavení nezávisel.
- Text s posunem nebo `Z` (`"2026-01-15T08:30:00Z"`) se uchová jako hodnota UTC. Když je `kind` nastaven na `Utc`, text bez informace o pásmu se čte jako UTC.
- Pro Unixový čas nastavte [vlastnost UNIXTIME](https://taphome.com/cs/docs/script/date-and-time/#datetime-properties).

**Příklad**

```taphome
# datum z částí: rok, měsíc, den, čas
VAR start := DATETIME(2026, 1, 15, 8, 30, 0);
# datum z textu ISO 8601 a z textu s formátem
VAR iso := DATETIME("2026-01-15T08:30:00");
VAR custom := DATETIME("15.01.2026 08:30", "dd.MM.yyyy HH:mm");
# datum z částí, označené jako UTC
VAR utc := DATETIME(2026, 1, 15, 8, 30, 0, 0, DateTimeKind.Utc);
# minuta zpracovaného data
custom.MINUTE;
# Result: 30
```

## DATETIMEADD

`DATETIMEADD` vrátí novou hodnotu `datetime` posunutou o zadaný počet let, měsíců, dnů, hodin, minut, sekund a milisekund; záporná čísla ji posunou zpět.

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

**Poznámky** — Původní hodnota se nemění. Přičtení měsíce k 31. lednu dá poslední den února. Interval lze přičíst i pomocí `+` s hodnotou [timespan](https://taphome.com/cs/docs/script/date-and-time/#timespan) nebo s počtem milisekund.

**Příklad**

```taphome
# aktuální čas řídicí jednotky
VAR now := NOW();
# o den dopředu, o dvě hodiny zpět
VAR tomorrow := DATETIMEADD(now, 0, 0, 1);
VAR twoHoursAgo := DATETIMEADD(now, 0, 0, 0, -2);
# o měsíc po 31. lednu
VAR endOfFebruary := DATETIMEADD(DATETIME(2026, 1, 31), 0, 1);
# den výsledku
endOfFebruary.DAY;
# Result: 28
```

## TIMESPAN

`TIMESPAN` vytvoří hodnotu `timespan` — dobu trvání — buď z milisekund, nebo ze dnů, hodin, minut, sekund a milisekund.

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

**Vlastnosti** (jen pro čtení)

| Vlastnost | Význam |
|---|---|
| `DAYS`, `HOURS`, `MINUTES`, `SECONDS`, `MILLISECONDS` | Jedna složka doby trvání (`HOURS` je 0 – 23). |
| `TOTALDAYS`, `TOTALHOURS`, `TOTALMINUTES`, `TOTALSECONDS`, `TOTALMILLISECONDS` | Celá doba trvání v dané jednotce, včetně zlomku. |

**Poznámky**

- Existují jen formy s 1 a 5 argumenty; 2 až 4 argumenty skript zastaví.
- `timespan ± timespan` dá `timespan`, `datetime ± timespan` dá `datetime`.
- Odečítání dvou hodnot `datetime` není definováno. Pro čas mezi dvěma daty odečtěte jejich `TICKS` (milisekundy).
- Deklarace proměnné s klíčovým slovem typu `timespan` vyžaduje Core 2023.2 nebo novější.

**Pří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átí aktuální posun časového pásma řídicí jednotky od UTC v milisekundách, včetně letního času.

```text
LOCALTIMEZONE()
```

**Příklad**

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

## Vlastnosti hodnot datetime

Hodnota `datetime` má tyto vlastnosti. Čtěte je z proměnné, ne z volání funkce.

| Vlastnost | Čtení | Zápis | Poznámka |
|---|---|---|---|
| `TICKS` | ✓ | ✓ | Milisekundy od 1.1.0001. |
| `YEAR`, `MONTH`, `DAY` | ✓ | ✓ | Zápis kontroluje rozsah (`MONTH` 1 – 12, `DAY` 1 – poslední den měsíce). |
| `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` nebo `Unspecified`. |
| `UTCDATETIME`, `LOCALDATETIME` | ✓ | | Stejný okamžik převedený podle časového pásma řídicí jednotky. |
| `UNIXTIME` | ✓ | ✓ | Sekundy od 1.1.1970 UTC. Zápis uloží hodnotu UTC. |

**Poznámky**

- Mimo argument funkce se hodnota výčtu píše s typem: `DayOfWeek.Saturday`. Samotné `Saturday` je neznámá proměnná.
- `<`, `>` a `=` porovnávají dvě hodnoty `datetime` jako okamžiky v čase, takže hodnoty s různým `KIND` se porovnají správně.
- Zápis hodnoty mimo rozsah zastaví skript, například *Value must between 0-23*.
- Bez formátu vypíše [TOSTRING](https://taphome.com/cs/docs/script/data-type-conversions/#tostring) hodnotu `datetime` jako `yyyy/MM/dd hh:mm:ss.fff` — ve 12hodinovém formátu bez AM a PM. Zadejte formát, například `"yyyy-MM-dd HH:mm"`.

**Příklad — žádná akce o víkendu**

```taphome
# aktuální čas řídicí jednotky
VAR now := NOW();
# v sobotu a v neděli vrať 0
IF now.DAYOFWEEK = DayOfWeek.Saturday OR now.DAYOFWEEK = DayOfWeek.Sunday
    RETURN(0);
END
# v ostatní dny vrať 1
1;
```

**Příklad — datum z Unixového časového razítka**

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

**Viz také** — [Formátovací řetězce](https://taphome.com/cs/docs/script/data-type-conversions/#format-strings), [Datové typy](https://taphome.com/cs/docs/script/data-types/).
