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


Функции DateAdd, DateDiff и TimeZoneOffset

Function Относится к
DateAdd Приложения на основе холста столбцы формул Dataverse классические потоки приложения на основе модели интерфейс командной строки Power Platform CLI
DateDiff Приложения на основе холста столбцы формул Dataverse классические потоки приложения на основе модели интерфейс командной строки Power Platform CLI
TimeZoneOffset Приложения на основе холста Классические потоки Приложения на основе модели Интерфейс командной строки 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, Addition [, Units ] )

  • DateTime — обязательно. Значение даты и времени, для которого необходимо выполнить операцию.
  • Addition — обязательный аргумент. Число, добавляемое к значению DateTime, в единицах Units.
  • Units — необязательный аргумент. Тип единиц для добавления: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters, или TimeUnit.Years. Если значение не указано, используются единицы TimeUnit.Days.

DateDiff( StartDateTime, EndDateTime [, Units ] )

  • StartDateTime — обязательный аргумент. Начальное значение даты и времени.
  • EndDateTime — обязательный аргумент. Конечное значение даты и времени.
  • Units — необязательный аргумент. Тип Единицы для вычитания: TimeUnit.Milliseconds, TimeUnit.Seconds, TimeUnit.Minutes, TimeUnit.Hours, TimeUnit.Days, TimeUnit.Months, TimeUnit.Quarters, or TimeUnit.Years. Если значение не указано, используются единицы TimeUnit.Days.

TimeZoneOffset( [ DateTime ] )

  • DateTime — необязательный аргумент. Значение даты и времени, для которого возвращается смещение. По умолчанию используются текущие дата и время.

Примеры

Во всех примерах предполагается, что текущие дата и время — 13:02 15 июля 2013 года.

Простой пример для функции 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.Months ),
"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.Months ) Возвращает разницу между двумя значениями в TimeUnit.Months. 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 для заданного времени.

Например, представьте, что сейчас 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( StartTime, −TimeZoneOffset( StartTime ), TimeUnit.Minutes )

Обратите внимание, на знак минус перед TimeZoneOffset, который позволяет вычесть смещение, а не добавить его.

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