Comparteix a través de


Funcions DateAdd, DateDiff i TimeZoneOffset

Function S'aplica a
DataAfegir Columnes Dataverse de fórmula d'aplicacions de llenç Fluxos d'escriptori Aplicacions Power Platform basades en models CLI
DateDiff Columnes Dataverse de fórmula d'aplicacions de llenç Fluxos d'escriptori Aplicacions Power Platform basades en models CLI
Zona horàriaOffset Aplicacions de llenç Fluxos d'escriptori Aplicacions Power Platform basades en models CLI

S'afegeix o es troba la diferència en els valors de data/hora i es converteix entre l'hora local i l'UTC.

Descripció

La funció DateAdd afegeix un nombre d'unitats a un valor de data/hora. El resultat és un nou valor de data/hora. També podeu restar un nombre d'unitats a un valor de data/hora especificant un valor negatiu.

La funció DateDiff retorna la diferència entre dos valors de data/hora. El resultat és un nombre enter d'unitats.

Per a ambdues funcions, les unitats poden ser TimeUnit.Milliseconds, TimeUnit.Seconds , TimeUnit.Minutes , TimeUnit.Hours , TimeUnit.Days , TimeUnit.Mesos , TimeUnit.Quarters oTimeUnit.Years . Per defecte, ambdues funcions utilitzen TimeUnit.Days com a unitats.

La funció TimeZoneOffset retorna el nombre de minuts entre l'hora local de l'usuari i l'UTC (temps universal coordinat).

Podeu utilitzar DateAdd amb TimeZoneOffset per convertir entre l'hora local de l'usuari i l'UTC (temps universal coordinat). Si afegiu TimeZoneOffset , convertirà una hora local en UTC i si la resteu (afegint el negatiu) convertirà una hora en UTC a l'hora local.

Consulteu també els tipus de dades Date, Time i DateTime i Treballar amb dates i hores per obtenir més informació.

Sintaxi

DateAdd( DateTime, Addition [, Unitats ] )

  • DateTime: obligatori. Valor de data/hora per operar.
  • Addition: obligatori. Número, en Unitats, per afegir a DateTime.
  • Unitats: opcional. El tipus d'unitats a afegir: TimeUnit.Milliseconds , TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Mesos, TimeUnit.Quarters o TimeUnit.Years. Si no s'especifica, s'utilitzen TimeUnit.Days .

DateDiff( StartDateTime, EndDateTime [, Unitats ] )

  • StartDateTime: obligatori. Valor de data i hora d'inici.
  • EndDateTime: obligatori. Valor de data i hora de finalització.
  • Unitats: opcional. El tipus d'unitats a restar: TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Mesos,TimeUnit.Quarters o TimeUnit.Years. Si no s'especifica, s'utilitzen TimeUnit.Days .

TimeZoneOffset( [ DateTime ] )

  • DateTime: opcional. Valor de data/hora per al qual es retorna el desplaçament. Per defecte, s'utilitza la data i l'hora actuals.

Exemples

En tots aquests casos, suposem que la data i l'hora actual és el 15 de juliol de 2013, 1:02 de la tarda.

DateAdd senzill

Fórmula Descripció Resultat
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Afegeix tres dies (unitats per defecte) a la data i l'hora actuals. "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Afegiu quatre hores a la data i l'hora actuals. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Afegeix un mes a la data actual, sense hora, ja que Today no retorna un component d'hora. "15-08-2013 00:00"
Text( DateAdd( Now(), -30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Resta 30 minuts a la data i l'hora actuals. "15-07-2013 12:32"

DateDiff senzill

Fórmula Descripció Resultat
DateDiff( Now(), DateValue("1/1/2014") ) Retorna la diferència entre les dues unitats en les unitats per defecte de TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Retorna la diferència entre els dos valors de TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Retorna la diferència entre la data i l'hora actuals i la data actual només (sense hora) en minuts. Atès que Now és posterior a Today, el resultat serà negatiu. -782

Diferència de dates amb resultats fraccionats

La funció DateDiff només retorna un nombre enter de les unitats que s'estan restant i la precisió s'especifica a la unitat especificada. Per calcular la diferència amb una precisió més alta, utilitzeu una unitat més petita i convertiu el resultat adient, com ara als exemples següents.

Fórmula Descripció Resultat
DateDiff( TimeValue ("09:45:00"), TimeValue ("10:15:36"), TimeUnit.Hores ) Els minuts/segons s'ignoren, la diferència es basa en el temps fins a l'hora. 1
DateDiff( TimeValue ("09:45:00"), TimeValue ("10:15:36"), TimeUnit.Minutes )/60 Els minuts s'utilitzen en la diferència i el resultat es divideix per 60 per tenir la diferència en hores. 0.5
DateDiff( TimeValue ("09:45:00"), TimeValue ("10:15:36"), TimeUnit.Seconds )/3600 Els minuts i segons s'utilitzen en la diferència; el resultat es divideix per 3600 per tenir la diferència en hores. 0.51

Convertir a UTC

Per convertir a l'UTC (hora universal coordinada), afegiu el TimeZoneOffset per a l'hora donada.

Per exemple, imagineu que la data i l'hora actual és el 15 de juliol de 2013, 1:02 de la tarda a l'hora d'estiu del Pacífic (PDT, UTC-7). Per determinar l'hora actual en UTC, utilitzeu:

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

TimeZoneOffset canvia per defecte per a l'hora actual, per la qual cosa no cal passar cap argument.

Per veure el resultat, utilitzeu la funció Text amb el format dd-mm-yyyy hh:mm, que retornarà 15-07-2013 20:02.

Convertir des de l'UTC

Per convertir des d'UTC, resteu el TimeZoneOffset (afegint-hi el negatiu) per a l'hora donada.

Per exemple, imagineu que la data i l'hora d'UTC del 15 de juliol del 2013 ales 8:02 del vespre s'emmagatzemen en una variable anomenada StartTime. Per ajustar l'hora per al fus horari de l'usuari, utilitzeu:

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

Observeu el signe negatiu abans de TimeZoneOffset per restar el desplaçament en comptes d'afegir-lo.

Per veure el resultat, utilitzeu la funció Text amb el format dd-mm-yyyy hh:mm, que resultarà en 15-07-2013 13:02 si sou a l'hora d'estiu del Pacífic.