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
DataEngadir( DataHora, Adición [, Unidades ])
- DateTime - Obrigatorio. Valor de data/hora no que operar.
- Adición - Obrigatorio. Número, en Unidades, para engadir á DataTime.
- Unidades - 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 .
DataDiff( StartDateTime, EndDateTime [, Unidades ])
- StartDateTime - Obrigatorio. Valor de data e hora de inicio.
- EndDateTime - Obrigatorio. Valor de data e hora de finalización.
- Unidades - Opcional. O tipo de Unidades a restar: TimeUnit.Milliseconds, TimeUnit.Segunds, 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 |
---|---|---|
Texto(DataEngadir(Agora(), 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 |
---|---|---|
DataDiff(Agora(), 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 por defecto é a hora actual, polo que non é necesario que lle pase 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, -TimeZoneOffset(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.