Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Код для вызова ближайших выходных дней


Автор: Simon 1.11.2004, 15:48
Доброго дня всем.
Имеется скрипт простого календарика с днями месяца и ссылками с них на соответствующий репертуар. Подскажите пожалуйста, как примерно можно описАть функцию, чтобы она вызывала данные на ближайшие выходные? То есть чтобы в любой день, когда не ткни, она вызывала ближайшие субботу и воскресенье. От чего надо оттолкнуться, каков ее алгоритм? Никак не могу сообразить.

Заранее спасибо за ответы/советы.

Автор: Forza 1.11.2004, 18:52
Почитай http://www.perldoc.com/perl5.8.4/pod/func/localtime.html про функцию localtime(). Она для текущего времени возвращает массив, в котором присутствует № дня недели.

Автор: korob2001 2.11.2004, 16:37
Попробуй этот код:
Код

#!/usr/bin/perl -w
use strict;
my $day_of_week = ( localtime )[6];
my ($time, $time2, $day);
$time = $time2 = time;
my $temp = $day_of_week;
while ( 1 ) {
  unless ( $temp == 6 ) {
      $temp++;
      $time += (60 * 60) * 24;
      next;
  }

  $time2 = ($time + (60 * 60) * 24)
        if ( $temp == 6 and $day_of_week != 0);
  last;
}

print "Суббота: " . scalar( localtime( $time ) ), "\n";
print "Воскресение: " . scalar( localtime( $time2 ) ), "\n";

Может он и не идеален, так как ниписал его без стронних модулей и в течении 5 минут. Но поправить его под свои нужды думаю больших усилий не потребуется.

Если хочешь заюзать модули, то читай доки:
perldoc Date::Calc
perldoc Date::Manip
Если они не установлены, то придётся установить ;).

Удачи.

Автор: Simon 2.11.2004, 16:46
Спасибо, korob2001, все получилось :-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)