strptime
не прочитает это.strptime
работает со структурой, которая сводится только к целочисленным секундам, и не имеет никаких форматов для распознавания нецелых чисел - и нет такого формата, как N
в Time::Piece
'* strptime
.Если вы знаете, что вы всегда ожидаете .000000
в течение нескольких микросекунд, то вы можете попробовать использовать ..."%I.%M.%S.000000 %p"
, иначе strptime
просто не для вас.
Как насчет DateTime:: Формат :: CLDR ?Формат "dd-MMM-yy hh.mm.ss.SSSSSS a"
, кажется, прекрасно работает с этим форматом.
use DateTime::Format::CLDR;
my $parser = DateTime::Format::CLDR->new(
pattern => "dd-MMM-yy hh.mm.ss.SSSSSS a",
locale => "en_US",
);
my $dt = $parser->parse_datetime("25-OCT-10 04.11.00.000100 AM");
say $dt->iso8601; # 2010-01-25T04:11:00
Редактировать: только что заметил, что месяцы не распознаются должным образом, если все они прописные -он распознает «октябрь», но не «октябрь».Исправленная версия доступна здесь и была отправлена в восходящем направлении для слияния:)
Обновление: DateTime :: Format :: CLDR 1.11 корректно без учета регистра.