|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Valery Kondakoff 2:5020/163 02 Feb 2002 05:16:42 To : All Subject : Сравнение дат? --------------------------------------------------------------------------------
Господа, помогите советом: на входе в скрипт я получаю количество дней
(например, десять). Потом, я просматриваю логи за указанное количество времени и
всасываю нужную информацию.
Пока я решаю эту проблему так: отсчитываю десять дней назад и перевожу дату в
epoch seconds. Потом, каждую встреченную в логах дату тоже перевоху в epoch
seconds и сравниваю: если дата из логов больше, то начинаю "сосать" данные.
В логи дата пишется так: 25 Jan 02.
use Time::Local;
# this hash is used, when converting verbose months to numeral (Jan = 0)
@months{qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)} =
qw(0 1 2 3 4 5 6 7 8 9 10 11);
$period = 10;
$date = time() - (24 * 60 * 60 * $period) if $period;
open(LOG, "<$logname") || die "Can't open $logname $!";
while(<LOG>) {
if (/-{20}\s+Packed\s+on\s+((\d+)\s(\w{3})\s\d\d(\d\d))\s/i) {
if(!$startdate) {
$founddate = timelocal("59", "59", "23", $2, $months{$3}, $4);
$date = $founddate if !$date;
if ($founddate >= $date) {
$startdate = $1
}
}
if ($startdate) {
# тут что-нибудь полезное делаем
}
}
close(LOG) || die "can't close $logname: $!";
В принципе все работает, но меня терзают смутные сомнения, что есть более
эффективный способ решения проблемы сравнения дат...
Поделитесь, плз, опытом!
Спасибо!
Best regards,
Valery Kondakoff
--- GoldED+/W32 1.1.5-1201
* Origin: ----> После прочтения - съесть!.. <---- (2:5020/163)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/22643c5b4225.html, оценка из 5, голосов 10
|