Compartir a través de


Funciones DateAdd, DateDiff y TimeZoneOffset

Function Se aplica a
FechaAñadir Aplicaciones de Canvas Dataverse columnas de fórmulas Escritorio flujos Aplicaciones basadas en modelos Power Platform CLI
Diferencia de fecha Aplicaciones de Canvas Dataverse columnas de fórmulas Escritorio flujos Aplicaciones basadas en modelos Power Platform CLI
Desplazamiento de zona horaria Aplicaciones de Canvas Escritorio flujos 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 [, Unidades ] )

  • DateTime - Obligatorio. Valor de fecha y hora con el que operar.
  • Adición - Obligatorio. 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 [, Unidades ] )

  • FechaInicio - Obligatorio. Valor de fecha y hora de inicio.
  • EndDateTime - Obligatorio. 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.

Desplazamiento de zona horaria( [ Fecha y hora ] )

  • 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
Texto(FechaAñadir(Ahora(), 3 ),
"dd-mm-yyyy hh:mm" )
Agrega tres días (unidades predeterminadas) a la fecha y hora actuales. "18-07-2013 13:02"
Texto(FechaAgregar(Ahora(), 4, UnidadDeTiempo.Horas),
"dd-mm-yyyy hh:mm" )
Agrega cuatro horas a la fecha y hora actuales. "15-07-2013 17:02"
Texto(FechaAgregar(Hoy(), 1, UnidadDeTiempo.Meses),
"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"
Texto(FechaAgregar(Ahora(), ‑30, UnidadDeTiempo.Minutos),
"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(Ahora(), DateValue("1/1/2014") ) Devuelve la diferencia entre las dos unidades en las unidades predeterminadas de TimeUnit.Days 170
DateDiff(Ahora(), DateValue("1/1/2014"), TimeUnit.Meses ) Devuelve la diferencia entre los dos valores en TimeUnit.Months 6
DateDiff(Ahora(), Hoy(), UnidadDeTiempo.Minutos) 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( ValorHora("09:45:00"), ValorHora("10:15:36"), UnidadHora. 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( ValorHora("09:45:00"), ValorHora("10:15:36"), UnidadHora.Segundos )/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(Ahora(), TimeZoneOffset(), UnidadDeTiempo.Minutos)

TimeZoneOffset tiene 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(HoraInicio, −TimeZoneOffset(HoraInicio), UnidadDeTiempo.Minutos)

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.