Funzioni DateAdd, DateDiff e TimeZoneOffset

Si applica a: app canvas colonne di formula Dataverse flussi desktop app basate su modello Power Platform CLI

Aggiunge o trova la differenza nei valori di data/ora ed esegue la conversione tra l'ora locale e l'ora UTC.

Descrizione

La funzione DateAdd aggiunge un numero di unità a un valore di data/ora. Il risultato è un nuovo valore di data/ora. È possibile anche sottrarre un numero di unità da un valore di data/ora specificando un valore negativo.

La funzione DateDiff restituisce la differenza tra due valori di data/ora. Il risultato è un numero intero di unità.

Per entrambe le funzioni, le unità possono essere TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. Per impostazione predefinita, l'unità usata da entrambe le funzioni è TimeUnit.Days.

La funzione TimeZoneOffset restituisce il numero di minuti tra l'ora locale dell'utente e l'ora UTC (Coordinated Universal Time).

È possibile usare DateAdd con TimeZoneOffset per la conversione tra l'ora locale dell'utente e l'ora UTC (Coordinated Universal Time). L'aggiunta di TimeZoneOffset convertirà un'ora locale nell'ora UTC e la sottrazione (aggiunta del valore negativo) eseguirà la conversione dall'ora UTC all'ora locale.

Vedere anche Tipi di dati Date, Time e DateTime e Utilizzo di date e ore per altre informazioni.

Sintassi

DateAdd( DateTime, Addition [, Units ] )

  • DateTime: obbligatorio. Valore data/ora su cui eseguire le operazioni.
  • Addition: obbligatorio. Numero da aggiungere a DateTime, in Units.
  • Units: facoltativo. Tipo di unità da aggiungere: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. Se questo argomento non è specificato, viene usato TimeUnit.Days.

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime: obbligatorio. Valore di data/ora iniziale.
  • EndDateTime: obbligatorio. Valore di data/ora finale.
  • Units: facoltativo. Tipo di unità da sottrarre: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. Se questo argomento non è specificato, viene usato TimeUnit.Days.

TimeZoneOffset( [ DateTime ] )

  • DateTime: facoltativo. Valore di data/ora per il quale restituire l'offset. Per impostazione predefinita vengono usati la data e l'ora correnti.

Esempi

In tutti questi esempi si supponga che la data e l'ora correnti siano 15 luglio 2013, 1:02 PM.

DateAdd semplice

Formula Descrizione Risultato
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Aggiunge tre giorni (unità predefinite) alla data e all'ora correnti. "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Aggiungere quattro ore alla data e all'ora correnti. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Aggiunge un mese alla data corrente, senza l'ora poiché Today non restituisce un componente ora. "15-08-2013 00:00"
Text( DateAdd( Now(), ‑30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Sottrae 30 minuti dalla data e dall'ora correnti. "15-07-2013 12:32"

DateDiff semplice

Formula Descrizione Risultato
DateDiff( Now(), DateValue("1/1/2014") ) Restituisce la differenza tra le due unità nelle unità di misura predefinite TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Restituisce la differenza tra i due valori in TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Restituisce la differenza tra la data e l'ora correnti e solo la data corrente (non l'ora), in minuti. Poiché il valore Now è successivo a Today il risultato sarà negativo. -782

Differenza di date con risultati frazionari

La funzione DateDiff restituisce solo un numero intero delle unità sottratte e la precisione è data nell'unità specificata. Per calcolare la differenza con una precisione maggiore, utilizza un'unità più piccola e converti il risultato in modo appropriato, come negli esempi seguenti.

Formula Descrizione Risultato
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) I minuti/secondi vengono ignorati, la differenza è basata sul tempo arrotondato all'ora. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 I minuti vengono utilizzati nella differenza e il risultato viene diviso per 60 per avere la differenza in ore. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 I minuti e i secondi vengono utilizzati nella differenza e il risultato viene diviso per 3600 per avere la differenza in ore. 0.51

Conversione in formato UTC

Per convertire in formato UTC (Coordinated Universal Time), aggiungere TimeZoneOffset per il tempo specificato.

Si supponga, ad esempio, che la data e l'ora correnti siano 15 luglio 2013, 1:02 PM nell'ora legale Pacifico (PDT, UTC-7). Per determinare l'ora corrente in formato UTC, usare:

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

TimeZoneOffset usa come impostazione predefinita l'ora corrente e non è quindi necessario passare un argomento.

Per visualizzare il risultato, usare la funzione Text con il formato dd-mm-yyyy hh:mm, che restituirà 15-07-2013 20:02.

Conversione dal formato UTC

Per eseguire la conversione dal formato UTC, sottrarre TimeZoneOffset, aggiungendo il corrispondente negativo, per il tempo specificato.

Si supponga, ad esempio, che la data e l'ora UTC 15 luglio 2013, 8:02 PM vengano archiviate in una variabile denominata StartTime. Per modificare l'ora per il fuso orario dell'utente, usare:

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

Si noti il segno negativo prima di TimeZoneOffset per sottrarre l'offset anziché aggiungerlo.

Per visualizzare il risultato, usare la funzione Text con il formato dd-mm-yyyy hh:mm, che restituirà 15-07-2013 13:02 se ci si trova in un fuso orario del Pacifico.