Сравнения
Текущий рейтинг темы: Нет
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 14:34 Сообщение отредактировано: 8 августа 2006 14:35
Есть файл с содержанием вида:
2006 06 24 12 15 2006 07 27 12 15 3
соответсвенно поля такие:
1 - год старта.
2 - месяц старта.
3 - число старта.
4 - час старта.
5 - минута старта.
6- год окончания.
7 - месяц окончания.
8 - число окончания.
9 - час окончания.
10 -минута окончания.
11 - колво требуемых обходов процедуры.
тоесть получается вот что: "2006.06.24 12:15" "2006.07.27 12:15" "3"
Как их корректнее всего сравнить и выполнить процедуру только в том случае, если оно входит в рамки указанного времени? Тоесть текущее время входит в заданный интервал в файле?
Просто при помощи IF ов помоему - извращение.... | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 14:47 Сообщение отредактировано: 8 августа 2006 15:03
Вообще говоря, примерно так:
<FILE>=open("<file.txt");
while (<FILE>) {
$fields=split(/ /);
$starttime = функция_формирования_времени($fields[0],$fields[1],$fields[2],$fields[3],$fields[4],0);
$endtime = функция_формирования_времени($fields[5],$fields[6],$fields[7],$fields[8],$fields[9],0);
$count = $fields[10]; // количество обходов теперь в $count
if (time()>=$starttime && time()<=$endtime ) {
// выполнение необходимых действий
}
}
Только вот как назвыается процедура формирования времени в Perl, не помню. Но точно знаю, что а) такая процедура есть, б) для ее использования нужно подключить какой-то модуль.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 14:51 Сообщение отредактировано: 8 августа 2006 14:56
use DateTime;
$dt = DateTime->new( year => 1964,
month => 10,
day => 16,
hour => 16,
minute => 12,
second => 47,
nanosecond => 500000000,
time_zone => 'Asia/Taipei',
);
Или не об этом речь? | | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 14:52
Оффтопик: почему смайлики в теге кода работают?Бага? | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 15:28
Возможно, как раз об этом...
А что будет храниться в $dh? Нужно, чтобы это был Unix timestamp, тогда все будет работать нормально.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 15:55
Вобщем я сделал вот так:
поспешил конечно, но пофиг. работает и главное
#!/usr/bin/perl -w
use DateTime;
open(FILE, "<file.txt");
while (<FILE> {
($year,$month,$day, $hour,$minute, $year2, $month2, $day2, $hour2, $minute2 ,$counter)=split(/\s+/);
$starttime = DateTime->new(year=>$year,month=>$month,day =>$day,hour=>$hour,minute=>$minute);
#print time();
$endtime = DateTime->new(year=>$year2,month=>$month2,day =>$day2,hour=>$hour2,minute=>$minute2);
print "$starttime\n";
print "$endtime\n";
# $count = $fields[10];
if (DateTime->now>=$starttime && DateTime->now<=$endtime )
{
print "Fuck:$counter\n";
}
}
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 августа 2006 15:56
Оффтопик: А смайлики уже задрали | | |
Время выполнения скрипта: 0.0354. Количество выполненных запросов: 19, время выполнения запросов 0.0228
|