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


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

Function Застосовується до
ДатаДодати Стовпці Dataverse формул програм на полотні Потоки робочого столу Програми, Power Platform керовані моделлю, CLI
DateDiff (ДатаРізниця) Стовпці Dataverse формул програм на полотні Потоки робочого столу Програми, Power Platform керовані моделлю, CLI
Зсув часового поясу Програми 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 - обов’язковий. Значення дати й часу для виконання дій.
  • Додавання - Обов’язкове. Число в одиницях вимірювання (Units), яке потрібно додати до DateTime.
  • Одиниці виміру- необов’язкові. Тип одиниць для додавання: TimeUnit.Milliseconds,TimeUnit.Seconds,TimeUnit.Minutes,TimeUnit.Hours,TimeUnit.Days,TimeUnit.Month,TimeUnit.Quarters абоTimeUnit.Years. Якщо не вказано, використовується TimeUnit.Days .

DateDiff( StartDateTime; EndDateTime [, Units ] )

  • StartDateTime - обов’язковий. Початкове значення дати й часу.
  • EndDateTime - Обов’язковий. Кінцеве значення дати й часу.
  • Одиниці виміру- необов’язкові. Тип одиниць для віднімання: Одиниця часу.Мілісекунди, Одиниця часу.Секунди, Одиниця часу.Хвилини, Одиниця часу.Години, Одиниця часу.Дні, Одиниця часу.Місяці, Одиниця часу.Квартали, або Одиниця часу.Роки. Якщо не вказано, використовується 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, якщо ви знаходитеся в тихоокеанському часовому поясі (літо).