|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/657777fe0cf8.html, оценка из 5, голосов 10
|