Funkce DateAdd, DateDiff a TimeZoneOffset

Platí pro: aplikace plátna sloupce vzorců Dataverse desktopové toky modelem řízené aplikace Power Platform CLI

Přičte nebo najde rozdíl v hodnotách data a času a provede převod mezi místním časem a standardem UTC.

Popis

Funkce DateAdd přičte počet jednotek k hodnotě data a času. Výsledkem je nová hodnota data a času. Zadáním záporné hodnoty můžete rovněž odečíst počet jednotek od hodnoty data a času.

Funkce DateDiff vrací rozdíl mezi dvěma hodnotami data a času. Výsledkem je celý počet jednotek.

U obou funkcí lze jako jednotky použít TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters nebo TimeUnit.Years. Ve výchozím nastavení používají obě funkce jednotku TimeUnit.Days.

Funkce TimeZoneOffset vrací počet minut mezi místním časem uživatele a standardem UTC (Coordinated Universal Time).

Funkci DateAdd můžete v kombinaci s funkcí TimeZoneOffset použít k převodu mezi místním časem uživatele a standardem UTC (Coordinated Universal Time). Přičtením funkce TimeZoneOffset se místní čas převede na standard UTC a jejím odečtením (přičtením záporné hodnoty) se standard UTC převede na místní čas.

Další informace najdete v části věnované datovým typům Date, Time a DateTime a také v části týkající se práce s daty a časy.

Syntaxe

DateAdd( DatumAČas; Přírůstek [; Jednotky ] )

  • DateTime – povinné. Hodnota data a času, se kterou se má operace provést.
  • Přírůstek – povinné. Číslo v Jednotkách, které se má přičíst k DatuAČasu.
  • Jednotky – volitelné. Typ Jednotky pro přičtení: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters nebo TimeUnit.Years. Pokud jednotku nezadáte, použije se TimeUnit.Days.

DateDiff( PočátečníDatumAČas; KoncovéDatumAČas [; Jednotky ] )

  • PočátečníDatumAČas – povinné. Počáteční hodnota data a času.
  • KoncovéDatumAČas – povinné. Koncová hodnota data a času.
  • Jednotky – volitelné. Typ Jednotky pro odečtení: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters nebo TimeUnit.Years. Pokud jednotku nezadáte, použije se TimeUnit.Days.

TimeZoneOffset( [ DatumAČas ] )

  • DateTime – povinné. Hodnota data a času, jejíž posun se má vrátit. Ve výchozím nastavení se použije aktuální datum a čas.

Příklady

Ve všech těchto příkladech se předpokládá, že aktuální datum a čas je 15. červenec 2013, 13:02.

Jednoduchá funkce DateAdd

Vzorec Popis Výsledek
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Přičte k aktuálnímu datu a času tři dny (výchozí jednotka). "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Přičte k aktuálnímu datu a času čtyři hodiny. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Přičte k aktuálnímu datu (bez času) jeden měsíc, protože funkce Today nevrací složku času. "15-08-2013 00:00"
Text( DateAdd( Now(), ‑30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Odečte od aktuálního data a času 30 minut. "15-07-2013 12:32"

Jednoduchá funkce DateDiff

Vzorec Popis Výsledek
DateDiff( Now(); DateValue("1/1/2014") ) Vrátí rozdíl mezi dvěma jednotkami ve výchozích jednotkách TimeUnit.Days. 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Vrátí rozdíl mezi dvěma hodnotami v jednotkách TimeUnit.Months. 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Vrátí rozdíl mezi aktuálním datem a časem a jenom aktuálním datem (bez času) v minutách. Protože Now je pozdější než Today, bude výsledek záporný. -782

Rozdíl dat s částečnými výsledky

Funkce DateDiff vrací pouze celý počet odečítaných jednotek a přesnost je dána zadanou jednotkou. Chcete-li vypočítat rozdíl s vyšší přesností, použijte menší jednotku a odpovídajícím způsobem převeďte výsledek, jako v příkladech níže.

Vzorec Popis Výsledek
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Minuty/sekundy jsou ignorovány, rozdíl je založen na čase do hodiny. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 V rozdílu se použijí minuty a výsledek se vydělí 60, aby byl rozdíl v hodinách. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 V rozdílu se použijí minuty a sekundy, a výsledek se vydělí 3600, aby byl rozdíl v hodinách. 0.51

Převod na standard UTC

Pokud chcete provést převod na standard UTC (Coordinated Universal Time), přičtěte funkci TimeZoneOffset k danému času.

Dejme tomu, že aktuální datum a čas je 15. červenec 2013, 13:02 v letním tichomořském čase (PDT, UTC-7). Aktuální čas ve standardu UTC zjistíte takto:

  • DateAdd( Now(), TimeZoneOffset(), TimeUnit.Minutes )

Funkce TimeZoneOffset používá jako výchozí aktuální čas, takže jí nemusíte předávat argument.

K zobrazení výsledku použijte funkci Text s formátem dd-mm-yyyy hh:mm, která vrátí 15-07-2013 20:02.

Převod ze standardu UTC

Pokud chcete provést převod ze standardu UTC, odečtěte funkci TimeZoneOffset (přičtením její záporné hodnoty) od daného času.

Dejme tomu, že datum a čas 15. červenec 2013 20:02 ve standardu UTC je uložený v proměnné s názvem StartTime. Tento čas převedete do časového pásma uživatele takto:

  • DateAdd( StartTime, −TimeZoneOffset( StartTime ), TimeUnit.Minutes )

Všimněte si záporného znaménka před funkcí TimeZoneOffset, díky kterému se posun nepřičte, ale odečte.

K zobrazení výsledku použijte funkci Text s formátemdd-mm-yyyy hh:mm, jejímž výsledkem bude 15-07-2013 13:02, pokud se nacházíte v letním tichomořském čase.