Как я могу преобразовать вывод даты unix для нескольких часовых поясов в UTC в Perl?

Как в Perl эффективно анализировать вывод команды даты unix с учетом часового пояса, а также преобразовывать в UTC?

Я' Я читал много похожих вопросов о stackoverflow, но немногие, похоже, учитывают синтаксический анализ нескольких часовых поясов. Вместо этого они, кажется, устанавливают часовой пояс вручную и предполагают, что он остается неизменным.

# Example Input Strings:
my @inputs = (
              'Tue Oct 12 06:31:48 EDT 2010',
              'Tue Oct 12 07:49:54 BST 2010',
             );

Я безуспешно пробовал следующее:

foreach my $input ( @inputs ) {
  my $t = Time::Piece->strptime( $input,
                                 '%a %b %d %T %Z %Y' );
  print $t->cdate, "\n";
}

Кажется, проблема в часовом поясе (% Z). Кроме того, поле часового пояса, похоже, не существует в Time :: Piece, что потребовало бы от меня написания специального кода для преобразования в UTC, что просто кажется ... неправильным.

Контекст: Я пытаюсь проанализировать устаревшие журналы из различных источников, которые используют команду unix date для отметок времени. В идеале я хотел бы преобразовать все отметки времени в UTC.

Любая помощь будет принята с благодарностью.

5
задан brian d foy 14 October 2010 в 18:42
поделиться