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
DateAdd( DateTime, 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 .
DateDiff( StartDateTime, 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.