Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Дата в формате ISO8601


Автор: Logo 5.2.2010, 19:26
Нужно сделать ввод даты в формате ISO 8601. Не понятно, как сделать что бы если часовой пояс не указан, использовался текущий пояс (а не UTC).
Пытаюсь так
Код

use DateTime::Format::ISO8601;

my $starttime = time;
my $basedate = DateTime->new(
  time_zone => 'Europe/Moscow',
  year   => 2010,
);
my $p = DateTime::Format::ISO8601->new(
   base_datetime => $basedate,
);
$d = $p->parse_datetime('2010-02-05T00:00:53');
$, = ' ', $\ = "\n";
print 'local: ', localtime $d->epoch;
print 'gm:    ', gmtime $d->epoch;
print 'unix:  ', $d->epoch;
print 'время выполнения скрипта: ', time() - $starttime;
#вывод:
#local:  53 0 3 5 1 110 5 35 0
#gm:     53 0 0 5 1 110 5 35 0
#unix:   1265328053
#время выполнения скрипта:  90


Но во-первых время все равно воспринимается универсальное, а во вторых скрипт ОЧЕНЬ долго думает - в примере 90 секунд.
Perl 5.10, WinXP.

И еще, ISO 8601 летнее время не поддерживает что-ли, или проблема в модуле perl? 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)