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.