Funktionerna DateAdd, DateDiff och TimeZoneOffset

Gäller to: Arbetsyteappar Dataverse formula columns Datorflöden Modellbaserade appar Power Platform CLI

Lägger till eller hittar skillnaden i datum-/tidsvärden och konverterar mellan lokal tid och UTC.

Beskrivning

Funktionen DateAdd lägger till ett antal enheter i ett datum-/tidsvärde. Resultatet är ett nytt datum-/tidsvärde. Du kan också ta bort ett antal enheter från ett datum-/tidsvärde genom att ange ett negativt värde.

Funktionen DateDiff returnerar skillnaden mellan två datum-/tidsvärden. Resultatet är ett heltal enheter.

För båda funktionerna kan enheterna vara TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters eller TimeUnit.Years. Som standard använder båda funktionerna TimeUnit.Days som enheter.

Funktionen TimeZoneOffset returnerar antalet minuter mellan användarens lokala tid och UTC (Coordinated Universal Time).

Du kan använda DateAdd med TimeZoneOffset för att konvertera mellan användarens lokala tid och UTC (Coordinated Universal Time). Om du lägger till TimeZoneOffset konverteras en lokal tid till UTC, och om du subtraherar det (lägger till det negativa) konverteras det från UTC till lokal tid.

Mer information finns även i Datatyperna Date, Time och DateTime och Arbeta med datum och tid.

Syntax

DateAdd( DateTime, Addition [, Units ] )

  • DateTime – Krävs. Det Date/Time-värde som ska användas.
  • Addition – obligatoriskt. Nummer att lägga till i DateTime i Units.
  • Units – valfritt. Typen av Enheter för att lägga till: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters eller TimeUnit.Years. Om inget annat anges används TimeUnit.Days används.

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime – obligatoriskt. Start för datum-/tidsvärden.
  • EndDateTime – obligatoriskt. Slut för datum-/tidsvärden.
  • Units – valfritt. Typen av Enheter för att subtrahera: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters eller TimeUnit.Years. Om inget annat anges används TimeUnit.Days används.

TimeZoneOffset( [ DateTime ] )

  • DateTime – valfritt. Datum-/tidsvärdet som förskjutningen ska returneras för. Som standard används aktuellt datum/tid.

Exempel

I alla dessa exempel förutsätter vi att det aktuella datumet och tiden är 15 juli 2013, 13:02.

Enkel DateAdd

Formel Beskrivning Resultat
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Lägger till tre dagar (standardenheter) till aktuellt datum och tid. "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Lägger till fyra timmar till aktuellt datum och tid. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Lägger till en månad till aktuellt datum, utan tid eftersom Today inte returnerar en tidskomponent. "15-08-2013 00:00"
Text( DateAdd( Now(), ‑30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Subtraherar 30 minuter från aktuellt datum och tid. "15-07-2013 12:32"

Enkel DateDiff

Formel Beskrivning Resultat
DateDiff( Now(), DateValue("1/1/2014") ) Returnerar skillnaden mellan de två enheterna i standardenheter för TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Returnerar skillnaden mellan de två värdena i TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Returnerar skillnaden mellan aktuellt datum och tid och endast aktuellt datum (ingen tid) i minuter. Eftersom Now är senare än Today blir resultatet negativt. -782

Skillnader mellan datum och delat resultat

Funktionen DateDiff returnerar endast ett helt nummer av de enheter som subtraheras och precisionen anges i den angivna enheten. Om du vill beräkna skillnaden med en högre precision använder du en mindre enhet och konverterar resultatet på lämpligt sätt, som i exemplen nedan.

Formel Beskrivning Resultat
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Minuterna/sekunderna ignoreras och skillnaden beror på tiden upp till timmen. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 Minuterna används i skillnaden och resultatet divideras med 60 för att skillnaden ska vara i timmar. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 Minuterna och sekunderna används i skillnaden och resultatet divideras med 3600 för att skillnaden ska vara i timmar. 0.51

Konvertera till UTC

Om du vill konvertera till UTC (Coordinated Universal Time) lägger du till TimeZoneOffset för angiven tid.

Anta till exempel att aktuellt datum och tid är 15 juli 2013, 13:02 i Pacific, sommartid (PDT, UTC-7). Använd följande för att fastställa den aktuella tiden i UTC:

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

TimeZoneOffset är som standard aktuell tid, så du inte behöver skicka ett argument till den.

Visa resultatet genom att använda funktionen Text med formatet dd-mm-yyyy hh:mm, som ger 15-07-2013 20:02.

Konvertera från UTC

Om du vill konvertera från UTC subtraherar du TimeZoneOffset (genom att lägga till det negativa) för den angivna tiden.

Anta till exempel att datum och tid för UTC är 15 juli 2013, 20:02 som är lagrat i variabeln StartTime. Om du vill justera tiden för användarens tidszon använder du:

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

Lägg märke till minustecknet för TimeZoneOffset för att subtrahera förskjutningen i stället för att lägga till den.

Visa resultatet genom att använda funktionen Text med formatet dd-mm-yyyy hh:mm, som ger 15-07-2013 13:02 om du befinner dig i Pacific, sommartid.