Поділитися через


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

Function Застосовується до
DateAdd Стовпці Dataverse формул програм на полотні Потоки робочого столу Програмні інтерфейси Power Platform командного рядка на основі моделі
DateDiff (ДатаРізниця) Стовпці Dataverse формул програм на полотні Потоки робочого столу Програмні інтерфейси Power Platform командного рядка на основі моделі
Зсув часового поясу Програми 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, якщо ви знаходитеся в тихоокеанському часовому поясі (літо).