my $pubDate = 'Fri, 16 May 2008 13:01:00 +0400';
$pubDate =~ /^\w\w\w\,\s(\d\d)\s(\w\w\w)\s(\d\d\d\d)\s(\d\d)\:(\d\d)\:(\d\d)\s\+\d\d\d\d$/;
my %months = ('Jan'=>0, 'Feb'=>1, 'Mar'=>2, 'Apr'=>3, 'May'=> 4, 'Jun'=>5, 'Jul'=>6, 'Aug'=>7, 'Sep'=>8, 'Oct'=>9, 'Nov'=>10, 'Dec'=>11);
print timelocal($6, $5, $4, $1, $months{$2}, $3);
Perl и RSS: pubDate в unix-время
Нужно конвертировать время и дату, извлекаемые из тегов pubDate, в unix-время. Вопрос: существует ли готовое решение и, если да, то каково оно, или придется писать свой парсер?
perldoc Time::Local
Это то понятно. Но прежде чем воспользоваться timelocal нужно произвести разбор pubDate.
Код:
Цитата: EvAn
Вот мой "парсер":
Код:
my $pubDate = 'Fri, 16 May 2008 13:01:00 +0400';
$pubDate =~ /^\w\w\w\,\s(\d\d)\s(\w\w\w)\s(\d\d\d\d)\s(\d\d)\:(\d\d)\:(\d\d)\s\+\d\d\d\d$/;
my %months = ('Jan'=>0, 'Feb'=>1, 'Mar'=>2, 'Apr'=>3, 'May'=> 4, 'Jun'=>5, 'Jul'=>6, 'Aug'=>7, 'Sep'=>8, 'Oct'=>9, 'Nov'=>10, 'Dec'=>11);
print timelocal($6, $5, $4, $1, $months{$2}, $3);
$pubDate =~ /^\w\w\w\,\s(\d\d)\s(\w\w\w)\s(\d\d\d\d)\s(\d\d)\:(\d\d)\:(\d\d)\s\+\d\d\d\d$/;
my %months = ('Jan'=>0, 'Feb'=>1, 'Mar'=>2, 'Apr'=>3, 'May'=> 4, 'Jun'=>5, 'Jul'=>6, 'Aug'=>7, 'Sep'=>8, 'Oct'=>9, 'Nov'=>10, 'Dec'=>11);
print timelocal($6, $5, $4, $1, $months{$2}, $3);
вот парсер дейва рольски
http://search.cpan.org/~rickm/DateTime-Format-Strptime-1.0702/lib/DateTime/Format/Strptime.pm