Функции DateAdd, DateDiff и TimeZoneOffset
Function | Относится к |
---|---|
ДатаДобавить | Приложения Canvas Dataverse Столбцы формул Потоки рабочего стола Приложения на основе моделей Power Platform CLI |
ДатаРазница | Приложения Canvas Dataverse Столбцы формул Потоки рабочего стола Приложения на основе моделей Power Platform CLI |
Смещение часового пояса | Приложения Canvas Потоки рабочего стола Приложения на основе моделей Power Platform CLI |
Добавление значения даты и времени или поиск разницы в значениях даты и времени, а также преобразование между местным временем и временем в формате UTC.
Описание
Функция DateAdd добавляет указанное число единиц измерения к значению даты и времени. Результатом является новое значение даты и времени. Можно также вычесть число единиц измерения из значения даты и времени, указав отрицательное значение.
Функция DateDiff возвращает разницу между двумя значениями даты и времени. Результатом является целое число единиц измерения.
Для обеих функций единицами измерения могут быть TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters, или TimeUnit.Years. По умолчанию обе функции в качестве единиц используют TimeUnit.Days.
Функция TimeZoneOffset возвращает число минут между местным временем пользователя и временем в формате UTC.
Можно совмещать функции DateAdd и TimeZoneOffset, чтобы выполнять преобразование между местным временем пользователя и временем в формате UTC. Добавляя результат TimeZoneOffset, можно преобразовать местное время в формат UTC, а вычитая его (добавляя отрицательное значение), можно преобразовать время в формате UTC в местное время.
Также см. сведения о типах данных Date, Time и DateTime и о работе с датами и временем.
Синтаксис
DateAdd( ДатаВремя, Сложение [, Единицы ] )
- Дата и время - Обязательно. Значение даты и времени, для которого необходимо выполнить операцию.
- Дополнение - Обязательно. Число, добавляемое к значению DateTime, в единицах Units.
- Единицы измерения - Необязательно. Тип единиц для добавления: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters, или TimeUnit.Years. Если значение не указано, используются единицы TimeUnit.Days.
DateDiff( StartDateTime, EndDateTime [, Единицы измерения ] )
- StartDateTime — обязательно. Начальное значение даты и времени.
- EndDateTime - Обязательно. Конечное значение даты и времени.
- Единицы измерения - Необязательно. Тип Единицы для вычитания: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters, or TimeUnit.Years. Если значение не указано, используются единицы TimeUnit.Days.
СмещениеЧасовогоПояса( [ ДатаВремя ] )
- Дата и время - Необязательно. Значение даты и времени, для которого возвращается смещение. По умолчанию используются текущие дата и время.
Примеры
Во всех примерах предполагается, что текущие дата и время — 13:02 15 июля 2013 года.
Простой пример для функции DateAdd
Формула | Описание | Результат |
---|---|---|
Текст( ДатаДобавить( Сейчас(), 3 ), "dd-mm-yyyy hh:mm" ) |
Добавляет три дня (единицы измерения по умолчанию) к текущему значению даты и времени. | "18-07-2013 13:02" |
Текст( ДатаДобавить( Сейчас(), 4, ЕдиницаВремени.Часы ), "dd-mm-yyyy hh:mm" ) |
Добавляет четыре часа к текущему значению даты и времени. | "15-07-2013 17:02" |
Текст( ДатаДобавить( Сегодня(), 1, ЕдиницаВремени.Месяцы ), "dd-mm-yyyy hh:mm" ) |
Добавляет один месяц к текущему значению даты без указания времени, так как Today не возвращает составляющую времени. | "15-08-2013 00:00" |
Текст( ДатаДобавить( Сейчас(), ‑30, ЕдиницаВремени.Минуты ), "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.Months) | Возвращает разницу между двумя значениями в TimeUnit.Months. | 6 |
DateDiff(Сейчас(), Сегодня(), Единица времени.Минуты) | Возвращает разницу между текущим значением даты и времени и текущей датой (без указания времени) в минутах. Так как значение 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 для заданного времени.
Например, представьте, что сейчас 13:02 15 июля 2013 года по летнему тихоокеанскому времени США (UTC-7). Чтобы определить текущее время в формате UTC, используйте следующую команду:
- DateAdd( Now(), TimeZoneOffset(), TimeUnit.Minutes )
TimeZoneOffset по умолчанию соответствует текущему времени, поэтому вам не нужно передавать ему аргумент.
Чтобы увидеть результат, используйте функцию Text в формате dd-mm-yyyy hh:mm. Она вернет 15-07-2013 20:02.
Преобразование из формата UTC
Чтобы преобразовать время из формата UTC в местное время, следует вычесть значение TimeZoneOffset (то есть добавить отрицательное значение) из заданного времени.
Для примера предположим, что значение даты и времени в формате UTC, 20:02 15 июля 2013 года, хранится в переменной StartTime. Чтобы настроить время в соответствии с текущим часовым поясом пользователя, используйте следующую команду:
- DateAdd(ВремяНачала, −TimeZoneOffset(ВремяНачала), ЕдиницаВремени.Минуты)
Обратите внимание, на знак минус перед TimeZoneOffset, который позволяет вычесть смещение, а не добавить его.
Чтобы увидеть результат, используйте функцию Text в формате dd-mm-yyyy hh:mm. Она вернет 15-07-2013 13:02, если вы находитесь в часовом поясе тихоокеанского времени США (лето).