Рассмотрим следующий фрагмент кода, который принимает пользовательский ввод (дату) и форматирует его, используя UnixDate from Date :: Manip
#!/usr/bin/perl
use Date::Manip;
my $input = join(" ", @ARGV);
my $date = UnixDate($input, "%Y-%m-%d %T");
print $date;
Это было сделано, чтобы позволить пользователям вводить дружественные даты, такие как " вчера " или " 1 неделя назад ".
Я хотел бы использовать $ date с другим часовым поясом (он будет использоваться для извлечения данных SQL). Как это будет сделано?
Я не нашел никакой конструкции UnixDate , которая позволила бы поставить часовой пояс, и я не знаю, как переформатировать ввод пользователя (объединение имени часового пояса с ним не помогает).
Пример
Пользователь находится где-то в Центральной Европе (часовой пояс: CET) и вводит «сегодня в 13:00». Выполнение кода выше выглядит следующим образом:
$ ./test.pl today at 1pm
2011-03-03 13:00:00
Это ожидаемый результат, поскольку изменения часового пояса не действуют. Я хотел бы использовать эту $ date с другим часовым поясом, например, Pacific Standard (часовой пояс: PST). В этом случае вывод должен быть:
$ ./test.pl today at 1pm
2011-03-03 04:00:00