Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Программирование »   Perl »   Сравнения
RSS

Сравнения

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Печать
 
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Есть файл с содержанием вида:
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
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Вообще говоря, примерно так:


<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
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005




         use DateTime;



         $dt = DateTime->new( year   => 1964,

                              month  => 10,

                              day    => 16,

                              hour   => 16,

                              minute => 12,

                              second => 47,

                              nanosecond => 500000000,

                              time_zone => 'Asia/Taipei',

                            );






Или не об этом речь?
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005

Оффтопик: почему смайлики в теге кода работают?Бага?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Возможно, как раз об этом...
А что будет храниться в $dh? Нужно, чтобы это был Unix timestamp, тогда все будет работать нормально.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
wsx
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Вобщем я сделал вот так:
поспешил конечно, но пофиг. работает и главное :)




#!/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
Участник Проекта
Юниксойд, сетевик
wsx
Откуда: Казань
Всего сообщений: 1074
Рейтинг пользователя: 28

Репутация пользователя: 1




Дата регистрации на форуме:
14 янв. 2005
Оффтопик: А смайлики уже задрали
<<Назад  Вперед>>Печать
Объединенный Открытый Проект »   Программирование »   Perl »   Сравнения
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0453. Количество выполненных запросов: 18, время выполнения запросов 0.0310