Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
| Functions | Относится к |
|---|---|
| DateAdd DateDiff |
|
| TimeZoneOffset |
|
| 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, если вы находитесь в часовом поясе тихоокеанского времени США (лето).