Это работает в Linux:
$ perl -MPOSIX -e 'print POSIX::strftime("%Y-%m-%dT%H:%M:%S%z\n", localtime)'
2010-02-04T17:37:43-0500
В Windows с ActiveState Perl выводится:
2010-02-04T17:39:24Eastern Standard Time
Использование DateTime :
#!/usr/bin/perl
use strict; use warnings;
use DateTime;
my $dt = DateTime->now(time_zone => 'EST');
print $dt->strftime('%Y-%m-%dT%H:%M:%S%z'), "\n"
Я получаю правильную строку и в Windows:
E:\> t
2010-02-04T18:06:24-0500
Я считаю Дата :: Формат гораздо более легкий вес модуля:
#!/usr/bin/perl
use strict; use warnings;
use Date::Format;
print time2str('%Y-%m-%dT%H:%M:%S%z', time, 'EST'), "\n";
Выход:
E:\> t
2010-02-04T18:11:36-0500