Функції DateAdd, DateDiff і TimeZoneOffset

Застосовується до: стовпців Dataverse формул програм Canvas Потоків робочого столу Програм, Power Platform керованих моделлю, CLI

Додавання або пошук різниці в значеннях дати й часу та перетворення місцевого часу на час у форматі UTC (і навпаки).

Опис

Функція DateAdd додає певну кількість одиниць вимірювання до значення дати й часу. Результатом є нове значення дати та часу. Також можна відняти певну кількість одиниць вимірювання від значення дати й часу, указавши від’ємне значення.

Функція DateDiff повертає різницю між двома значеннями дати та часу. Результатом буде ціла кількість одиниць вимірювання.

Для обох функцій одиницями можуть бути TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Month,TimeUnit.Quarters або TimeUnit.Years. Типово, обидві функції використовують TimeUnit.Days як одиниці.

Функція TimeZoneOffset повертає кількість хвилин між місцевим часом користувача і часом у форматі UTC (всесвітній координований час).

Можна скористатися функцією DateAdd разом із функцією TimeZoneOffset для перетворення місцевого часу користувача на час у форматі UTC (і навпаки). Додавання функції TimeZoneOffset перетворить місцевий час на час у форматі UTC, а її видалення (додавання від’ємного значення) перетворить час у форматі UTC на місцевий час.

Також перегляньте розділи Типи даних «Дата», «Час» і «Дата-час» і робота з датами й часом для отримання додаткової інформації.

Синтаксис

DateAdd( DateTime, Addition [, Units ] )

  • DateTime – обов’язковий аргумент. Значення дати й часу для виконання дій.
  • Addition – обов’язковий аргумент. Число в одиницях вимірювання (Units), яке потрібно додати до DateTime.
  • Units – необов’язковий аргумент. Тип одиниць виміру , які потрібно додати: Одиниця часу.Мілісекунди,Одиниця часу.Секунди,Одиниця часу.Хвилини,Одиниця часу.Години,Одиниця часу.Дні,Одиниця часу.Місяці,Одиниця часу.Квартали абоОдиниця часу.Роки. Якщо не вказано, буде використано TimeUnit.Days .

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime – обов’язковий аргумент. Початкове значення дати й часу.
  • EndDateTime – обов’язковий аргумент. Кінцеве значення дати й часу.
  • Units – необов’язковий аргумент. Тип одиниць для віднімання: Одиниця часу.Мілісекунди,Одиниця часу.Секунди,Одиниця часу.Хвилини,Одиниця часу.Години,Одиниця часу.Дні,Одиниця часу.Місяці,Одиниця часу.Квартали абоОдиниця часу.Роки. Якщо не вказано, буде використано TimeUnit.Days .

TimeZoneOffset( [ DateTime ] )

  • DateTime – необов’язковий аргумент. Значення дати та часу, для якого потрібно повернути різницю в часі. За замовчуванням використовуються поточні дата й час.

Приклади

В усіх цих прикладах припускається, що поточними датою й часом є 15 липня 2013 р., 13:02.

Проста функція «DateAdd»

Формула Опис Результат
Text( DateAdd( Now(), 3 ),
"dd-mm-yyyy hh:mm" )
Додає три дні (одиниці вимірювання за замовчуванням) до поточних дати й часу. "18-07-2013 13:02"
Text( DateAdd( Now(), 4, TimeUnit.Hours ),
"dd-mm-yyyy hh:mm" )
Додає чотири години до поточних дати й часу. "15-07-2013 17:02"
text( dateAdd( today(), 1, TimeUnit.Month ),
"dd-mm-yyyy hh:mm" )
Додає один місяць до поточної дати без часу, оскільки функція Today не повертає компонент часу. "15-08-2013 00:00"
text( dateAdd( now(), -30, TimeUnit.Minutes ),
"dd-mm-yyyy hh:mm" )
Віднімає 30 хвилин від поточних дати й часу. "15-07-2013 12:32"

Проста функція «DateDiff»

Формула Опис Результат
DateDiff( Now(), DateValue("1/1/2014") ) Повертає різницю між двома модулями у типових одиницях виміру TimeUnit.Days 170
DateDiff( Now(), DateValue("1/1/2014"), TimeUnit.Month ) Повертає різницю між двома значеннями в TimeUnit.Month 6
DateDiff( Now(), Today(), TimeUnit.Minutes ) Повертає різницю між поточними датою й часом та лише поточною датою (без часу) у хвилинах. Оскільки функція Now дає значення, що настає пізніше, ніж значення, яке повертає функція Today, результат буде від’ємним. -782

Різниця дат із дрібними результатами

Функція DateDiff повертає лише цілу кількість одиниць, для яких виконується віднімання, а точність задається вказаною одиницею. Щоб обчислювати різницю з більшою точністю, використовуйте меншу одиницю вимірювання та відповідним чином перетворюйте результат, як у прикладах нижче.

Формула Опис Результат
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Hours ) Хвилини/секунди відкидаються, різниця обчислюється у часі з точністю до годин. 1
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Minutes )/60 У різниці використовуються хвилини, а результат ділиться на 60, щоб отримати різницю в годинах. 0.5
DateDiff( TimeValue("09:45:00"), TimeValue("10:15:36"), TimeUnit.Seconds )/3600 У різниці використовуються хвилини та секунди, а результат ділиться на 3600, щоб отримати різницю в годинах. 0.51

Перетворення часу на час у форматі UTC

Щоб перевести час у формат UTC (всесвітній координований час), додайте TimeZoneOffset для заданого часу.

Уявіть, наприклад, що поточними датою і часом є 15 липня 2013 р., 13:02 за тихоокеанським часом (літо) (PDT, UTC-7). Для визначення поточного часу у форматі UTC необхідно скористатися нижченаведеною формулою.

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

За замовчуванням функція TimeZoneOffset відповідає поточному часу, тому не потрібно передавати їй аргумент.

Щоб переглянути результат, скористайтеся функцією Text із форматом dd-mm-yyyy hh:mm, яка поверне 15-07-2013 20:02.

Перетворення часу у форматі UTC на інший час

Для перетворення часу у форматі UTC на інший час, видаліть функцію TimeZoneOffset (додавши від’ємне значення) для заданого часу.

Наприклад, уявіть, що поточні дата й час у форматі UTC – 15 липня 2013 р., 20:02 – зберігаються в змінній з іменем StartTime. Щоб настроїти час для часового поясу користувача, використайте вказану нижче формулу.

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

Зверніть увагу на знак «мінус» перед TimeZoneOffset, що вказує на віднімання різниці в часі, а не на її додавання.

Щоб переглянути результат, скористайтеся функцією Text із форматом dd-mm-yyyy hh:mm, яка поверне 15-07-2013 13:02, якщо ви знаходитеся в тихоокеанському часовому поясі (літо).