Функции, работающие с компонентами значения типа "дата-время"
Все функции из настоящего раздела, за исключением @Second, «чувствительны» к значению часового пояса. Поэтому при обращении к документу, созданному в другом часовом поясе, вы можете получить на первый взгляд странный результат. Например, время создания документа, поздравляющего с наступлением нового года, может быть датировано годом старым. Однако ничего странного тут нет, Lotus хранит значения типа «дата-время» в формате по Гринвичу, а при выводе по умолчанию преобразует значение к текущему часовому поясу.
@Weekday( дата-время )
Область применения: без ограничений.
Определяет день недели, на который «приходится» заданная величина дата-время, и возвращает соответствующее дню недели число. Номерами дней недели являются числа от 1 до 7, причем воскресенью соответствует 1, понедельнику - 2, и т.д.
Пример 1. Возвращает 5.
@Weekday( [29.9.88] )
Пример 2. Возвращает 2, если дата в поле ResponseDate приходится на понедельник.
@Weekday( ResponseDate )
Пример 3. Возвращает строку "Работа в выходные", если содержимое поля ResponseDate соответствует субботе или воскресенью; в противном случае возвращает текстовую строку с датой создания документа.
@If(
@Weekday( ResponseDate ) = 7 | @Weekday( ResponseDate ) = 1;
"Работа в выходные";
@Text( @Created )
)
@Day( дата-время )
Область применения: без ограничений.
Извлекает день месяца из указанного значения даты-времени.
Пример 1. Возвращает 15, если сегодня 15 июля или 15 августа или 15 сентября и т.д.
@Day( @Now )
Пример 2. Возвращает строку "Оплачено не позже 15-го", если день месяца в поле PaymentReceived меньше или равен 15; в противном случае возвращает строку "Оплачено после 15-го".
@If(
@Day( PaymentReceived )<16;
"Оплачено не позже 15-го";
"Оплачено после 15-го"
)
@Month( дата-время )
Область применения: без ограничений.
Извлекает номер месяца из указанной величины дата-время.
Пример 1. Возвращает 1.
@Month( [15.01.88] )
Пример 2. Возвращает номер (1-12) текущего месяца.
@Month( @Now )
@Year( дата-время )
Область применения: без ограничений.
Из указанной величины дата-время извлекает и возвращает год в соответствии с той тайм-зоной, в которой величина дата-время
была получена. Результат является числом.
Пример. Возвращает 1995.
@Year( [29.9.95] )
@Hour( дата-время )
Область применения: без ограничений.
Возвращает количество часов в параметре дата-время.
Пример 1. Возвращает 9.
@Hour( [9:30] )
Пример 2. Возвращает 8, если время в поле Date составляет 8:56:34.
@Hour( Date )
Пример 3. Возвращает 9, если поле Date содержит дату-время 30.7.90 9:59:59.
@Hour( Date )
Пример 4. Возвращает 3, если текущий документ был создан 15.2.92 в 3:00:12.
@Hour( @Created )
@Minute( дата-время )
Область применения: без ограничений.
Возвращает количество минут в параметре дата-время.
Пример 1. Возвращает 30.
@Minute( [9:30] )
Пример 2. Возвращает 56, если поле Time содержит 8:56:34.
@Minute( Time )
Пример 3. Возвращает 59, если поле Date содержит 30.7.88 9:59:59.
@Minute( Date )
Пример 4. Возвращает 00, если текущий документ был создан 29.9.94 3:00:12.
@Minute( @Сreated )
@Second( дата-время )
Область применения: без ограничений.
Извлекает и возвращает количество секунд в указанной величине дата-время в виде числового значения.
Пример 1. Возвращает 45.
@Second( [9:30:45] )
Пример 2. Возвращает 45, если текущее время 12:30:45.
@Second( @Now )
Пример 3. Возвращает 45 как текстовую строку, если содержимое поля Date является величиной "дата-время", в которой количество секунд равно 45.
@Text( @Second( Date ))
@Date( год; месяц; день
)
@Date( год; месяц; день; час; минута; секунда )
@Date( дата-время
)
Область применения: без ограничений.
Возвращает заданную параметрами дату как величину типа дата/время, но содержащую только компоненту даты. Для указания отдельных составляющих даты и времени (год, месяц, день, час, минута, секунда) в первых двух формах записи @Date используются числа. В форме записи @Date( [дата-время] ) в качестве параметра используется величина типа дата/время. @Date отбрасывает из нее компоненту, относящуюся ко времени, оставляя только компоненту даты. В соответствии с синтаксисом константу типа дата/время записывают в квадратных скобках, например [31.10.95 12:00:00].
Пример 1. Возвращает [20.11.95].
@Date( 1995;11;20 )
Пример 2. Возвращает [20.01.95].
@Date( 1995;01;20;8;58;12 )
Пример 3. Возвращает [20.11.95].
@Date( [20.11.95 8:58:12] )
@Time( час; минута; секунда
)
@Time( год; месяц; день; час; минута; секунда )
@Time( [дата-время] )
Область применения: без ограничений.
Преобразует заданное параметрами время в величину типа "дата-время", но содержащую только компоненту времени.
Пример 1. Возвращает [23:50:30].
@Time( 1951; 04; 11; 23; 50; 30)
Пример 2. Возвращает [09:19:24] в 9:19:24 каждый день.
@Time( @Now )
Пример 3. Возвращает [09:19:24], если документ был создан в 9:19:24.
@Time( @Created )
@Adjust( дата-время; год; месяц; день; час; минута;
секунда; [флаг] )
Область применения: без ограничений. Функция "чувствительна" к часовому поясу.
Изменяет указанную первым параметром величину дата-время
на заданный интервал времени (год лет + месяц
месяцев + день дней + час часов + минута
минут + секунда секунд). Корректирующие величины могут быть положительными либо отрицательными. В формуле должны присутствовать все параметры (за исключением [флага]); если Вы не хотите изменять какой-то из них - просто укажите 0.
Характерное использование @Adjust - вычисление даты исполнения документа по известной дате создания документа и заданному сроку исполнения, например, один месяц.
Параметр [флаг] может принимать значения [InLocalTime]
и [InGMT] (по умолчанию). Данный аргумент влияет на результирующее значение функции в случае, когда это значение и исходный параметр дата-время
находятся по разные стороны от границы перехода с летнего времени на зимнее, и наоборот (при условии, что на компьютере установлен такой переход). Если [флаг]
равен [InLocalTime], то происходит увеличение или уменьшение времени по Гринвичу на час, для [флага] равного [InGMT] такой корректировки не производится.
ВНИМАНИЕ: в Domino для флага [InLocalTime] при больших значениях сдвигов параметра дата-время функция @Adjust может работать не вполне корректно. Сам IBM утверждает, что это не ошибка и сдвиги при этом флаге должны быть в рамках одного дня.
Пример 1. Демонстрирует некорректное применение функции @Adjust с флагом [InLocalTime].
@Prompt( [Ok]; "InLocalTime"; @Text(
@Adjust( [27.03.99 01:00]; -1; 1; 1; 0; 0; 0;
[InLocalTime] )));
Rem "возвращает [28.04.97 01:00] ";
@Prompt( [Ok]; "InGMT"; @Text( @Adjust( [27.03.99 01:00];
-1; 1; 1; 0; 0; 0; [InGMT] )));
Rem "возвращает [28.04.98 01:00] "
Пример 2. Возвращает [2.12.94]. Domino распознает 30 как день месяца и, увеличивая этот параметр на 2, автоматически изменяют месяц с 9 на 10. Затем месяц и год, соответственно, будут увеличены на 2.
@Adjust( [30.9.92]; 2; 2; 2; 0; 0; 0 )
Пример 3. Возвращает [20.01.93]. Domino возвращает дату, которая на 2 года и 10 дней меньше указанной.
@Adjust( [30.01.95]; -2; 0; -10; 0; 0; 0 )
Пример 4. Возвращает дату на месяц больше даты, указанной в поле Date.
@Adjust( Date; 0; 1; 0; 0; 0; 0 )
Пример 5. Возвращает дату на месяц и день больше текущей.
@Adjust( @Now; 0; 1; 1; 0; 0; 0 )
Пример 6. В 1999 году переход на летнее время осуществлялся 29.03.99 в 02:00. Поэтому первый оператор формулы выдаст окно со значением [29.03.99 02:00:00], а второй - [29.03.99 01:00:00].
@Prompt( [OK]; "InGMT"; @Text( @Adjust(
[28.03.99 01:00:00]; 0; 0; 1; 0; 0; 0; [InGMT] )));
@Prompt( [OK]; "InLocalTime"; @Text( @Adjust(
[28.03.99 01:00:00]; 0; 0; 1; 0; 0; 0; [InLocalTime] )))