Compartir por


Funcións de DataAdd, DateDiff e TimeZoneOffset

Function Aplícase a
DataEngadir Aplicacións de lenzo Dataverse columnas de fórmulas Fluxos de escritorio Aplicacións baseadas en modelos Power Platform CLI
DataDiff Aplicacións de lenzo Dataverse columnas de fórmulas Fluxos de escritorio Aplicacións baseadas en modelos Power Platform CLI
TimeZoneOffset Aplicacións de lenzo Fluxos de escritorio Aplicacións baseadas en modelos Power Platform CLI

Engade ou atopa a diferenza de valores de data/hora e converte da hora local a UTC.

Descripción

A función DataAdd engade un número de unidades a un valor de data/hora. O resultado é un novo valor de data/hora. Tamén pode restar un número de unidades dun valor de data/hora especificando un valor negativo.

A función DataDiff devolve a diferenza entre dous valores de data e hora. O resultado é un número enteiro de unidades.

Para ambas as funcións, as unidades poden ser TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters ou TimeUnit.Years. De forma predeterminada, ambas funcións usan TimeUnit.Days como unidades.

A función TimeZoneOffset devolve o número de minutos entre a hora local do usuario e UTC (Hora Universal Coordinada).

Pode usar DataAdd con TimeZoneOffset para converter entre a hora local do usuario e UTC (Hora Universal Coordinada). Engadir TimeZoneOffset converterá unha hora local en UTC e restándoa (sumando o negativo) converterase de UTC á hora local.

Consulta tamén Tipos de datos de data, hora e hora e traballar con datas e horas para obter máis información.

Sintaxe

DateAdd( DateTime, Addition [, Units ] )

  • DateTime - Obrigatorio. Valor de data/hora no que operar.
  • Addition - Obrigatorio. Número, en Unidades, para engadir á DataTime.
  • Units - Opcional. O tipo de Unidades a engadir: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters ou TimeUnit.Years. Se non se especifica, empréganse TimeUnit.Days .

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime - Obrigatorio. Valor de data e hora de inicio.
  • EndDateTime - Obrigatorio. Valor de data e hora de finalización.
  • Units - Opcional. O tipo de Unidades a restar: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters ou TimeUnit.Years. Se non se especifica, empréganse TimeUnit.Days .

TimeZoneOffset( [ DateTime ] )

  • DateTime - Opcional. Valor da data/hora para o que se devolverá a compensación. Por defecto, úsase a data/hora actual.

Exemplos

En todos estes exemplos, supoña que a data e hora actual é o 15 de xullo de 2013, 1:02 PM.

DateAdd sinxelo

Fórmula Descripción Resultado
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Engade tres días (unidades predeterminadas) á data e hora actual. "18-07-2013 13:02"
Texto(DataEngadir(Agora(), 4, TimeUnit.Hours),
"dd-mm-yyyy hh:mm" )
Engade catro horas á data e hora actual. "15-07-2013 17:02"
Texto(DataEngadir(Hoxe(), 1, TimeUnit.Meses),
"dd-mm-yyyy hh:mm" )
Engade un mes á data actual, sen tempo debido a que Hoxe non devolve un compoñente de tempo. "15-08-2013 00:00"
Texto(DataEngadir(Agora(), -30, TimeUnit.Minutes),
"dd-mm-yyyy hh:mm" )
Resta 30 minutos da data e hora actual. "15-07-2013 12:32"

DateDiff sinxela

Fórmula Descripción Resultado
DateDiff( Now(), DateValue("1/1/2014") ) Devolve a diferenza entre as dúas unidades nas unidades predeterminadas de TimeUnit.Days 170
DataDiff(Agora(), DateValue("1/1/2014"), TimeUnit.Months ) Devolve a diferenza entre os dous valores en TimeUnit.Months 6
DataDiff(Agora(), Hoxe(),TimeUnit.Minutes) Devolve a diferenza entre a data/hora actual e a data actual só (sen tempo) en minutos. Debido a que Agora é posterior a Hoxe, o resultado será negativo. -782

Diferenza de datas con resultados fraccionados

A función DateDiff só devolve un número enteiro das unidades que se restan e a precisión dáse na unidade especificada. Para calcular a diferenza cunha maior precisión, use unha unidade máis pequena e converta o resultado adecuadamente, como nos exemplos de abaixo.

Fórmula Descripción Resultado
DataDiff(TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Os minutos ou segundos ignóranse, a diferenza baséase no tempo ata a hora. 1
DataDiff( TimeValue ("09:45:00"), TimeValue ("10:15:36"), TimeUnit.Minutes )/60 Os minutos úsanse na diferenza e o resultado divídese por 60 para ter a diferenza en horas. 0.5
DataDiff( TimeValue ("09:45:00"), TimeValue ("10:15:36"), TimeUnit.Seconds )/3600 Os minutos e segundos úsanse na diferenza; o resultado divídese por 3600 para ter a diferenza en horas. 0.51

Conversión a UTC

Para converter a UTC (Hora Universal Coordinada), engada TimeZoneOffset polo tempo dado.

Por exemplo, imaxine que a data e hora actual é 15 de xullo de 2013, 1:02 PM en horario de verán do Pacífico (PDT, UTC-7). Para determinar a hora actual en UTC, use:

  • DataAdd(Agora(), TimeZoneOffset(), TimeUnit.Minutes)

TimeZoneOffset establécese de xeito predeterminado na hora actual, polo que non é preciso pasarlle un argumento.

Para ver o resultado, use a función Texto co formato dd-mm-yyyy hh:mm, que devolverá 15-07-2013 20:02.

Conversión desde UTC

Para converter desde UTC, reste TimeZoneOffset (engadindo o negativo) para o tempo dado.

Por exemplo, imaxine a data e hora de UTC 15 de xullo de 2013, 8:02 PM almacénase nunha variable chamada StartTime. Para axustar a hora para a zona horaria do usuario, use:

  • DataAdd(HoraInicio, −Desfase ZonaHora(HoraInicio), UnidadeHora.Minutos)

Teña en conta o signo negativo antes de TimeZoneOffset para restar a compensación en vez de sumala.

Para ver o resultado, use a función Texto co formato dd-mm-yyyy hh:mm, que permitirá obter 15-07-2013 13:02 se está no horario de verán do Pacífico.