Анализ формата длинной даты в Perl

#perl #date #datetime

#perl #Дата #дата-время

Вопрос:

Существует ли модуль для perl, который будет преобразовывать этот формат даты в DateTime объект?

Четверг, 13 сентября 2007 г.

Я пробовал DateTime::Format::Natural , но, похоже, это не работает.

Я бы предпочел функцию, которая не возражает, если, например, нет дня недели. Я не могу быть уверен, будут ли данные согласованными.

Ответ №1:

Этого можно достичь, используя DateTime::Format::Flexible.

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

my $dt = DateTime::Format::Flexible->parse_datetime(
   'Thursday, September 13, 2007',
   lang => [ 'en' ],                    # Optional
);
  

Если бы вы знали конкретный формат (как в вашем первоначальном вопросе), я бы рекомендовал DateTime::Format::Strptime.

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

my $format = DateTime::Format::Strptime->new(
   pattern  => '%A, %B %e, %Y',
   locale   => 'en',
   on_error => 'croak',
);

my $dt = $format->parse_datetime('Thursday, September 13, 2007');