Язык @-формул в LotusDomino R 6.

Функции, работающие с компонентами значения типа "дата-время"


Все функции из настоящего раздела, за исключением @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] )))


Содержание раздела