Funciones DateAdd, DateDiff y TimeZoneOffset

Se aplica a: Aplicaciones de lienzo Columnas de fórmulas de Dataverse Flujos de escritorio Aplicaciones basadas en modelos Power Platform CLI

Agrega valores de fecha y hora o encuentra la diferencia en estos valores y realiza la conversión entre la hora local y UTC.

Descripción

La función DateAdd agrega un número de unidades a un valor de fecha y hora. El resultado es un nuevo valor de fecha y hora. También puede restar un número de unidades de un valor de fecha y hora mediante la especificación de un valor negativo.

La función DateDiff devuelve la diferencia entre dos valores de fecha y hora. El resultado es un número entero de unidades.

En ambas funciones, las unidades pueden ser TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. De forma predeterminada, ambas funciones usan TimeUnit.Days como unidades.

La función TimeZoneOffset devuelve el número de minutos entre la hora local del usuario y la Hora universal coordinada (UTC).

Puede usar DateAdd con TimeZoneOffset para realizar la conversión entre la hora local del usuario y la Hora universal coordinada (UTC). Al sumar TimeZoneOffset se convierte la hora local a UTC y al restarlo (agregar el signo negativo) se convierte de UTC a la hora local.

Para obtener más información, consulte también las secciones sobre los tipos de datos Date, Time y DateTime, y sobre cómo trabajar con Date y Time.

Sintaxis

DateAdd( DateTime, Addition [, Units ] )

  • DateTime: requerido. Valor de fecha y hora con el que operar.
  • Suma: requerido. Número, en unidades, para agregar a DateTime.
  • Unidades: opcional. El tipo de Unidades para agregar: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. Si no se especifica, se usará TimeUnit.Days.

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime: requerido. Valor de fecha y hora de inicio.
  • EndDateTime: requerido. Valor de fecha y hora de finalización.
  • Unidades: opcional. El tipo de Unidades para restar: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters o TimeUnit.Years. Si no se especifica, se usará TimeUnit.Days.

TimeZoneOffset( [ DateTime ] )

  • DateTime: opcional. Valor de fecha y hora para el que se devuelve el desplazamiento. De forma predeterminada, se utiliza la fecha y hora actuales.

Ejemplos

En todos estos ejemplos, se supone que la fecha y hora actuales son 15 de julio de 2013, 1:02 p.m.

DateAdd simple

Fórmula Descripción Resultado
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Agrega tres días (unidades predeterminadas) a la fecha y hora actuales. "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Agrega cuatro horas a la fecha y hora actuales. "15-07-2013 17:02"
Text( DateAdd( Today(), 1, TimeUnit.Months ),
"dd-mm-yyyy hh:mm" )
Agrega un mes a la fecha actual, sin tiempo dado que Today no devuelve un componente de tiempo. "15-08-2013 00:00"
Text( DateAdd( Now(), ‑30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Resta 30 minutos de la fecha y hora actuales. "15-07-2013 12:32"

DateDiff simple

Fórmula Descripción Resultado
DateDiff( Now(), DateValue("1/1/2014") ) Devuelve la diferencia entre las dos unidades en las unidades predeterminadas de TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Months ) Devuelve la diferencia entre los dos valores en TimeUnit.Months 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Devuelve la diferencia entre la fecha y hora actuales y la fecha actual solamente (ninguna hora) en minutos. Puesto que Now es posterior a Today, el resultado es negativo. -782

Diferencia de fechas con resultados fraccionados

La función DateDiff solo devuelve un número entero de las unidades que se restan, y la precisión se da en la unidad especificada. Para calcular la diferencia con mayor precisión, utilice una unidad más pequeña y convierta el resultado de forma adecuada, como en los ejemplos siguientes.

Fórmula Descripción Resultado
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Los minutos/segundos se ignoran, la diferencia se basa en el tiempo hasta la hora. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 Se usan los minutos en la diferencia y el resultado se divide entre 60 para tener la diferencia en horas. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 Se usan los minutos y los segundos en la diferencia y el resultado se divide entre 3600 para tener la diferencia en horas. 0.51

Conversión a UTC

Para convertir a UTC (Hora universal coordinada), agregue TimeZoneOffset durante el tiempo especificado.

Imagine, por ejemplo, que los valores de fecha y hora actuales son 15 de julio de 2013, 1:02 p.m. en la Hora de verano del Pacífico (PDT, UTC-7). Para determinar la hora actual en hora UTC, use:

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

TimeZoneOffset toma como valor predeterminado la hora actual, por lo que no es necesario pasarle un argumento.

Para ver el resultado, use la función Text con el formato dd-mm-yyyy hh:mm, que devolverá 15-07-2013 20:02.

Conversión desde UTC

Para convertir desde UTC, reste TimeZoneOffset (agregando el signo negativo) para la hora especificada.

Imagine, por ejemplo, que los valores de fecha y hora UTC 15 de julio de 2013, 8:02 p.m. se almacenan en una variable llamada StartTime. Para ajustar la hora de la zona horaria del usuario, use:

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

Tenga en cuenta el signo negativo delante de TimeZoneOffset para restar el desplazamiento en lugar de sumarlo.

Para ver el resultado, use la función Text con el formato dd-mm-yyyy hh:mm, que devuelve 15-07-2013 13:02 en la Hora de verano del Pacífico.