Функції 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, якщо ви знаходитеся в тихоокеанському часовому поясі (літо).