Funkcijas DateAdd, DateDiff un TimeZoneOffset

Attiecas uz: Pamatnes programmu Dataverse formulu kolonnām Darbvirsmas plūsmas Modeļa vadītas programmas Power Platform CLI

Pievieno vai atrod atšķirību datuma/laika vērtībās un konvertē starp lokālo laiku un UTC.

Apraksts

Funkcija DateAdd pievieno skaitļu virkni datuma/laika vērtībai. Rezultāts ir jauna datuma/laika vērtība. Varat arī atņemt vienību skaitu no datuma/laika vērtības, norādot negatīvu vērtību.

Funkcija DateDiff atgriež starpību starp divām datuma/laika vērtībām. Rezultāts ir vesels vienību skaits.

Abām funkcijām vienības var būt TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Months,TimeUnit.Quarters vai TimeUnit.Years. Pēc noklusējuma abas funkcijas izmanto TimeUnit.Days kā vienības.

Funkcija TimeZoneOffset atgriež minūšu skaitu starp lietotāja lokālo laiku un UTC (universālo koordinēto laiku).

Varat izmantot DateAdd kopā ar TimeZoneOffset, lai konvertētu starp lietotāja lokālo laiku un UTC (universālo koordinēto laiku). Pievienojot TimeZoneOffset, vietējais laiks tiks konvertēts UTC izteiksmē, un to atņemot (pieskaitot negatīvu) to konvertēs no UTC lokālajā laikā.

Papildinformāciju skatiet arī datu tipos Date, Time un DateTime un darbā ar datumiem un laikiem .

Sintakse

DateAdd( DateTime, Addition [, Units ] )

  • DateTime — Obligāti. Datuma/laika vērtība, kurā jādarbojas.
  • Addition — Obligāti. Skaitlis, izteikts Vienībās, kuru pievienot DateTime.
  • Vienības — Neobligāti. Pievienojamo vienību tips:TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Months,TimeUnit.Quarters vaiTimeUnit.Years. Ja tas nav norādīts, tiek izmantotas TimeUnit.Days .

DateDiff( StartDateTime, EndDateTime [, Vienības ] )

  • StartDateTime — Obligāti. Sākuma datuma/laika vērtība.
  • EndDateTime — Obligāti. Beigu datuma/laika vērtība.
  • Vienības — Neobligāti. Atņemamo vienību tips:TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Months,TimeUnit.Quarters vaiTimeUnit.Years. Ja tas nav norādīts, tiek izmantotas TimeUnit.Days .

TimeZoneOffset( [ DateTime ] )

  • DateTime — Neobligāti. Datuma/laika vērtība, kurai jāatgriež nobīde. Pēc noklusējuma tiek izmantots pašreizējais datums/laiks.

Piemēri

Visos šajos piemēros pieņemiet, ka pašreizējais laiks un datums ir July 15, 2013, 1:02 PM.

Vienkārša DateAdd

Formula Apraksts Rezultāts
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Pašreizējam datumam un laikam pievieno trīs dienas (noklusējuma vienības). "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Pievienojiet pašreizējam datumam un laikam četras stundas. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Pievieno vienu mēnesi pašreizējam datumam bez laika, jo Today neatgriež laika komponentu. "15-08-2013 00:00"
Text( DateAdd( Now(), -30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Noņem 30 minūtes no pašreizējā datuma un laika. "15-07-2013 12:32"

Vienkārša DateDiff

Formula Apraksts Rezultāts
DateDiff( Now(), DateValue("1/1/2014") ) Atgriež divu vienību starpību noklusējuma vienībās TimeUnit.Days. 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Atgriež abu vērtību starpību timeunit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Atgriež starpību starp pašreizējo datumu/laiku un pašreizējo datumu vienīgi (bez laika) minūtēs. Tā kā Now ir vēlāks nekā Today, rezultāts būs negatīvs. -782

Datumu atšķirība ar daļskaitļa rezultātiem

Funkcija DateDiff atgriež tikai veselu atņemto vienību skaitu, un precizitāte ir norādīt sniegtajā vienībā. Lai aprēķinātu starpību ar augstāku precizitāti, izmantojiet mazāku vienību un pārvērtiet rezultātu atbilstoši, piemēram, tālāk redzamajiem piemēriem.

Formula Apraksts Rezultāts
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Minūtes/sekundes tiek ignorētas, atšķirību pamatojot ar laiku līdz stundai. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 Minūtes tiek izmantotas starpībā, un rezultāts tiek dalīts ar 60, lai būtu starpība stundās. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 Minūtes un sekundes tiek izmantotas starpībā; un rezultāts tiek dalīts ar 3600, lai būtu starpība stundās. 0.51

Konvertēšana par UTC

Lai konvertētu UTC (universālajā koordinētajā laikā), dotajam laikam pievienojiet TimeZoneOffset.

Piemēram, iedomājieties, ka pašreizējais datums un laiks ir July 15, 2013 1:02 PM Klusā okeāna vasaras laikā (PDT, UTC-7). Lai noteiktu pašreizējo laiku UTC sistēmā, izmantojiet:

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

TimeZoneOffset veido noklusējumu pašreizējā laikā, tāpēc jums nav tai jāpadod arguments.

Lai skatītu rezultātu, izmantojiet Text funkciju ar formātu dd-mm-yyyy hh:mm, kas atgriezīs 15-07-2013 20:02.

Konvertēšana no UTC

Lai konvertētu no UTC, atņemiet TimeZoneOffset (pievienojot negatīvu vērtību) no dotā laika.

Piemēram, iedomājieties, ka UTC datums un laiks July 15, 2013, 8:02 PM tiek glabāts mainīgajā ar nosaukumu StartTime. Lai pielāgotu laiku lietotāja laika joslai, izmantojiet:

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

Atzīmējiet negatīvo zīmi pirms TimeZoneOffset, lai atņemtu nobīdi, nevis to pievienotu.

Lai skatītu rezultātu, izmantojiet funkciju Text ar formātu dd-mm-yyyy hh:mm, kas radīs rezultātu 15-07-2013 13:02, ja atrodaties Klusā okeāna vasaras laika joslā.