Funkcie DateAdd, DateDiff a TimeZoneOffset

Vzťahuje sa na: Stĺpce Dataverse vzorcov aplikácií plátna Postupy v počítačovom prostredí Modelom riadené aplikácie Power Platform CLI

Pridáva alebo zisťuje rozdiel v hodnotách času a dátumu a prevedie miestny čas na UTC (koordinovaný svetový čas).

Popis

Funkcia DateAdd pripočíta k hodnotám dátumu a času počet jednotiek. Výsledkom je nová hodnota dátumu a času. Zadaním zápornej hodnoty môžete tiež odčítať počet jednotiek z hodnoty dátumu a času.

Funkcia DateDiff vracia rozdiel dvomi hodnotami dátumu a času. Výsledkom je celé číslo jednotiek.

Pre obe funkcie môžu byť jednotky TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Month,TimeUnit.Quarters alebo TimeUnit.Years. V predvolenom nastavení obe funkcie používajú TimeUnit.Days ako jednotky.

Funkcia TimeZoneOffset vracia počet minút medzi miestnym časom a UTC (koordinovaným svetovým časom).

Funkciu DateAdd spolu s funkciou TimeZoneOffset môžete použiť na prevod medzi miestnym časom a UTC (koordinovaným svetovým časom). Pridaním funkcie TimeZoneOffset sa miestny čas prevedie na UTC a jej odčítaním (pridaním negatívnej hodnoty) sa UTC prevedie na miestny čas.

Ďalšie informácie nájdete aj v témach Typy údajov Dátum, Čas a Dátum a čas a Práca s dátumami a časmi .

Syntax

DateAddDateTime, Addition [, Units ] )

  • DateTime – povinné. Hodnota dátumu a času s ktorou sa má operácia vykonať.
  • Addition – povinné. Číslo v jednotkách Units, ktoré sa majú pripočítať k hodnote DateTime.
  • Units – voliteľné. Typ jednotiek na pridanie: TimeUnit.Miliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Month,TimeUnit.Quarters alebo TimeUnit.Years. Ak nie je zadané, použije sa TimeUnit.Days .

DateDiffStartDateTime, EndDateTime [, Units ] )

  • StartDateTime – povinné. Počiatočná hodnota dátumu a času.
  • EndDateTime – povinné. Koncová hodnota dátumu a času.
  • Units – voliteľné. Typ jednotiek na odčítanie: TimeUnit.Miliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Month,TimeUnit.Quarters alebo TimeUnit.Years. Ak nie je zadané, použije sa TimeUnit.Days .

TimeZoneOffset( [ DateTime ] )

  • DateTime – voliteľné. Hodnota dátumu a času, ktorej posun sa má vrátiť. Podľa predvoleného nastavenia sa použije aktuálny dátum a čas.

Príklady

Vo všetkých týchto príkladoch sa predpokladá, že aktuálny dátum a čas je 15. júl 2013, 13:02.

Jednoduchá funkcia DateAdd

Vzorec Popis Výsledok
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
K aktuálnemu dátumu a času pripočíta tri dni (predvolená jednotka). "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
K aktuálnemu dátumu a času pripočíta štyri hodiny. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
K aktuálnemu dátumu (bez času) pripočíta jeden mesiac, keďže funkcia Today nevracia zložku času. "15-08-2013 00:00"
Text( DateAdd( Now(), -30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Od aktuálneho dátumu a času odčíta 30 minút. "15-07-2013 12:32"

Jednoduchá funkcia DateDiff

Vzorec Popis Výsledok
DateDiff( Now(), DateValue("1/1/2014") ) Vráti rozdiel medzi dvoma jednotkami v predvolených jednotkách funkcie TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Vráti rozdiel medzi týmito dvoma hodnotami v argumente TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Vráti rozdiel medzi aktuálnym dátumom a časom a iba aktuálnym dátumom (bez času) v minútach. Keďže Now je neskoršie ako Today, bude výsledok záporný. -782

Rozdiel dátumov s čiastkovými výsledkami

Funkcia DateDiff vráti iba celý počet odčítaných jednotiek a presnosť je uvedená v zadanej jednotke. Ak chcete vypočítať rozdiel s vyššou presnosťou, použite menšiu jednotku a výsledok primerane preveďte, ako v príkladoch nižšie.

Vzorec Popis Výsledok
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Minúty/sekundy sa ignorujú, rozdiel závisí od času do hodiny. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 V rozdiele sa používajú minúty a výsledok sa vydelí 60, aby sa dosiahol rozdiel v hodinách. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 V rozdiele sa používajú minúty a sekundy a výsledok sa vydelí 3600, aby sa dosiahol rozdiel v hodinách. 0.51

Prevod na UTC

Ak chcete urobiť prevod na UTC (koordinovaný svetový čas), pridajte k danému času funkciu TimeZoneOffset.

Predpokladajme, že aktuálny dátum a čas je 15. júl 2013, 13:02 v letnom tichomorskom čase (PDT, UTC-7). Aktuálny čas v UTC zistíte takto:

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

Funkcia TimeZoneOffset používa ako predvolený aktuálny čas, takže nemusíte pre ňu zadávať argument.

Na zobrazenie výsledku použite funkciu Text s formátom dd-mm-yyyy hh:mm, ktorá vráti hodnotu 15-07-2013 20:02.

Prevod z UTC

Ak chcete urobiť prevod z UTC, odčítajte funkciu TimeZoneOffset (pripočítaním jej zápornej hodnoty) od daného času.

Predpokladajme napríklad, že UTC dátum a čas 15. júl 2013, 20:02 sú uložené v premennej s názvom StartTime. Tento čas prevediete do časového pásma používateľa takto:

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

Všimnite si záporné znamienko pred funkciou TimeZoneOffset, použitím ktorého sa posun nepripočíta, ale odčíta.

Na zobrazenie výsledku použite funkciu Text s formátom dd-mm-yyyy hh:mm, ktorej výsledkom bude 15-07-2013 13:02, ak sa nachádzate v letnom tichomorskom čase.