Четыре проблемы:
- DateTime не экспортирует
set_Time_Zone
.
- Вы используете
$dt
, даже не присвоив ему значение. (Это то, что выдает сообщение об ошибке.)
- «EST» не является стандартным названием часового пояса, и его следует избегать. Это может относиться к восточному стандартному времени (UTC-0500), часовому поясу, который в основном не используется 10 мая. Если это так, укажите
-0500
.
- Вы ничего не печатаете.
Если вы действительно имели в виду Восточное стандартное время (несмотря на то, что оно не использовалось 10 мая в местах, где наблюдается летнее время), используйте следующее:
perl -MDateTime -le'print DateTime->new(...,time_zone=>"-0500")->set_time_zone("UTC")'
Скорее всего, вы имели в виду восточное дневное время. Если это так, используйте следующее:
perl -MDateTime -le'print DateTime->new(...,time_zone=>"-0400")->set_time_zone("UTC")'
Вместо использования фиксированных смещений вы можете указать географически основанные имена из базы данных tz. При их использовании DateTime учитывает, используется ли DST для рассматриваемой даты-времени, и использует соответствующее смещение. Это делается следующим образом:
perl -MDateTime -le'print DateTime->new(...,time_zone=>"America/New_York")->set_time_zone("UTC")'
Наконец, вот как вы должны указать DateTime использовать местный часовой пояс:
perl -MDateTime -le'print DateTime->new(...,time_zone=>"local")->set_time_zone("UTC")'
Примечания:
- Если вам нужен другой формат вывода, вы можете использовать
->strftime(...)
.
- При использовании командной оболочки Windows поменяйте местами
'
и "
.