2014-02-06 6 views
-1

Я прошел через множество ответов, и никто из них, похоже, не решил мою проблему. Я хочу запустить Perl-скрипт из Нью-Йорка, чтобы запланировать задачу на компьютере в другом часовом поясе, скажем, в Лос-Анджелесе (или в любом другом часовом поясе). Пользователь, который запускает скрипт, будет иметь возможность вводить дату/время и часовой пояс.как планировать будущую задачу в разных часовых поясах в Perl?

Пример:

perl script.pl -action reboot LAHost.com 2014/012/12 15:00:00 'America/Los_Angeles' 

Этот скрипт должен запланировать перезагрузку на LAHost.com компьютере 3pm по местному времени в Лос-Анджелесе.

Может ли кто-нибудь помочь мне найти способ сделать это в perl, используя DateTime или любые другие встроенные функции?

Я новичок в программировании и в настоящее время изучаю Perl. Поэтому, пожалуйста, извините мое невежество.

ответ

0

Ваш вопрос появится быть

Как преобразовать дату и время в указанном часовом поясе местному времени?

use DateTime::Format::Strptime qw(); 

my $date = '2014/012/12'; 
my $time = '15:00:00'; 
my $tz = 'America/Los_Angeles'; 

my $format = DateTime::Format::Strptime->new(
    pattern => '%Y/%m/%d %H:%M:%S', 
    time_zone => $tz, 
    on_error => 'croak', 
); 

my $dt = $format->parse_datetime("$date $time"); 
$dt->set_time_zone('local'); 

print $format->format_datetime($dt), "\n"; 
+0

Именно то, что я искал; но поскольку у меня не было времени ждать ответа, я понял, как это работает для меня, хотя я не уверен, что это лучший способ: my $ timeZone = "Европа/Лондон «; my $ dateTime = DateTime-> new (year => $ year, month => $ month, day => $ day, hour => $ hour, minute => $ minute, second => $ second, time_zone = > $ timeZone); Я планирую действие в лондонское время с часовым поясом «Европа/Лондон», следя за лондонскими часами и в правильное время в Лондоне, действие было выполнено. Спасибо, что показали мне другой подход. –

+0

@ Kaji Lama, ваш удаленный ответ эквивалентен моему, за исключением того, что вам не нужно выкатывать свой собственный парсер, если вы используете D :: F :: Strptime. – ikegami

0
my $timeZone="Europe/London"; 
my $dateTime = DateTime->new(year => $year, month => $month, 
       day => $day, hour => $hour, minute => $minute, 
       second => $second, time_zone => $timeZone);