Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Pavel Ammosov                        2:5020/400     08 Oct 2001  15:32:17
 To : Nikolay Pichtin
 Subject : Re: Текущее время
 -------------------------------------------------------------------------------- 
 
 Nikolay Pichtin wrote:
 
 NP> Есть программа предач телевидения (см. ниже).
 NP> Hеобходимо выделить передачу, которая идет в HАСТОЯЩИЙ МОМЕHТ.
 NP> Пробую как описано ниже, но это не совсем правильно, т.к.
 NP> в текущий момент может идти передача, которая началась
 NP> два и более часов назад.
 
 Hу, передача на два часа  - это когда "Лебединое озеро" показывают, наверно.
 
 Я просто пересчитал время из часов-минут в минуты, с учетом
 переходов через полночь и того, что передачи, идущие в
 час ночи, в программе записываются на предыдущий день.
 === tv.pl
 #!/usr/bin/perl -w 
 use strict;
 my @tv_prg;
 my $i = 0;
 while (<DATA>) {
   chomp;
   my ($begin, $title) = split(/ /, $_, 2);
   # переведем $begin из часов.минут в минуты
   my ($h, $m) = map {s/[^\d]//gs; $_} split(/\./, $begin, 2);
   $begin = $h*60+$m;
   
   $tv_prg[$i] = {'begin'=>$begin, 'title'=>$title, 'end'=>0};
   if ($i > 0) { # Это вторая и более запись
    if ($tv_prg[$i - 1]->{begin} > $begin) {
       # Произошел переход через полночь
       $begin += 24*60;
    }
    $tv_prg[$i]->{begin} = $begin;
    # Время конца предыдущей передачи = время начала нашей
    $tv_prg[$i-1]->{end} = $begin;
   }   
   $i++;
 }
 
 my ($h, $m) = (localtime(time))[2,1];
 my $time = $h*60 + $m; 
 print "Time: $time\n";
 $time += 24*60 if ($h < 6); # Если время меньше 6 утра, то в 
                             # ТВ-программе это еще вчера.
   
 
 print join("", map 
   {"* " . int($_->{begin}/60) . "." . ($_->{begin} - int($_->{begin}/60)*60) . 
   " - $_->{end} $_->{title}\n"} @tv_prg);
 for my $prg (@tv_prg ) {
   if (($prg->{'begin'} <= $time) and (($prg->{'end'} >= $time) or $prg->{'end'} 
 == 0) ) {
    print "Текущая передача: $prg->{title}\n";
    last;
   }
 }  
 __END__
 7.05 Мультфильм.
 7.30 Идущие вперед.
 8.10 "УДИВИТЕЛЬЫЙ МИР ЖИВОТЫХ". # Без 'H' бывает прикольно
 8.40 аш сад.
 9.45 "Отчего, почему?"
 10.25 "Как вам это нравится?!"
 11.00,  14.00,  22.55 События.  # Такое время надо специально обрабатывать
 11.15 Городское собрание.
 11.45 Х/ф "ВЕРЫЙ ЙОГАЕС".
 13.15 "Версты". Путешествие в Россию.
 14.20 Денежный вопрос.
 14.30 Музыка.
 15.10 М/ф "Тараканище".
 15.30 "ЖЮЛИ ЛЕСКО".
 17.20 "Антимония".
 19.00 "ЧИСТО АГЛИЙСКОЕ УБИЙСТВО".
 20.00 "Постскриптум".
 20.45 А.Жирардо и Ф.уаре в фильме "ЕЖЫЙ ПОЛИЦЕЙСКИЙ".
 23.10 ХОРОШО, БЫков.
 23.25 Мода non-stop.
 0.00 Поздний ужин.
 0.15 Х/ф "СЕМЬЯ".
 2.10 Х/ф "ПРЕКРАСАЯ ИСТОРИЯ", 1.
 === конец tv.pl
 
 -- 
 Павел Аммосов, email: apavel@aha.ru, icq uin: 19210183
 www: http://isabase.philol.msu.ru/~apavel/
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Текущее время   Nikolay Pichtin   06 Oct 2001 11:48:50 
 Re: Текущее время   Pavel Ammosov   08 Oct 2001 15:32:17 
Архивное /ru.perl/657777fe0cf8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional