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


DateAdd, и DateDiffTimeZoneOffset функции

Functions Относится к
DateAdd
DateDiff
Приложения На основе холста Copilot Studio Desktop потоки формул dataverse, управляемые моделью приложений Power Platform CLI, функции Power Pages
TimeZoneOffset Приложения На основе холста Copilot Studio Desktop поддерживают функции Power Platform CLI Dataverse, управляемые моделью
Function Относится к
DateAdd
DateDiff
TimeZoneOffset

Добавление значения даты и времени или поиск разницы в значениях даты и времени, а также преобразование между местным временем и временем в формате 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, Добавление [, единицы ] )

  • Дата и время - Обязательно. Значение даты и времени, для которого необходимо выполнить операцию.
  • Дополнение - Обязательно. Число, добавляемое к значению 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.

TimeZoneOffset( [ DateTime ] )

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

Примеры

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

Простой DateAdd

Формула Описание Результат
Text( DateAdd(Now(), 3 ),
"dd-mm-гггг чч:мм" )
Добавляет три дня (единицы измерения по умолчанию) к текущему значению даты и времени. "18-07-2013 13:02"
Text( DateAdd(Now(), 4, TimeUnit.Hours ),
"dd-mm-гггг чч:мм" )
Добавляет четыре часа к текущему значению даты и времени. "15-07-2013 17:02"
Text( DateAdd(Today(), 1, TimeUnit.Months ),
"dd-mm-гггг чч:мм" )
Добавляет один месяц к текущему значению даты без указания времени, так как Today не возвращает составляющую времени. "15-08-2013 00:00"
Text( DateAdd(Now(), -30, TimeUnit.Minutes ),
"dd-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, если вы находитесь в часовом поясе тихоокеанского времени США (лето).