parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Простой метод определения рабочего времени

Сергей 02.11.2005 20:02

@work_time[s_day;f_day;now]
# Метод возвращает истину, если сейчас рабочее время и не выходной день
# s_day - начало рабочего дня
# f_day - конец рабочего дня
# now - время, я обычно ставлю сейчас (объект класса date)

# Определяем переменные
# Смотрим всё ли ок с полученной датой $now
 ^try{$t[$now.day]
 }{
     ^throw[work_time;$exception.source;Возможно вы не передали переменную ^$now]
     $exception.handled(1)
 }

# Сотрим все ли ок с переданным нам временем работы
 ^try{  
  $s_day[^date::create[${s_day}]]
  $f_day[^date::create[${f_day}]]
 }{
     ^throw[work_time;$exception.source;Возможно вы неверно ввели дату (надо - hh:mm, а у вас ${s_day} и ${f_day})]
     $exception.handled(1)
 }

# Рабочее ли время
  $work_time[^if($now > $s_day && $now < $f_day){1}]

# Рабочий ли день
  ^if($work_time){
   $calendar_month[^date:calendar[rus]($now.year;$now.month)]
   $s[^calendar_month.locate($calendar_month.5 == $now.day)]
   $v[^calendar_month.locate($calendar_month.6 == $now.day)]
   ^if($s || $v){$result(0);$result(1)}
  }{$result(0)}

#@work_time[]

Вызов:
$now[^date::now[]]
$test[^work_time[7:00;18:00;${now}]]
^if($test){Работаем}{Не работаем}