Как я могу проверить дату / время в формате UTC в формате Uyyy-MM-dd'T'HH: mm: ssZ в UTC с помощью Perl? - PullRequest
3 голосов
/ 18 января 2010

Код был бы хорош, но точка в правильном направлении также хороша.

CPAN? RegEx

Я видел оба пути

"YYYY-MM-dd'T'HH: мм: SSZ";

"YYYY-MM-ДДTчч: мм: SSZ";

Ответы [ 2 ]

11 голосов
/ 18 января 2010

Эфир определенно находится на правильном пути с DateTime. Используя DateTime, вы можете быть уверены, что у вас есть время, которое действительно существует, и что-то могло бы произойти 29 февраля 2000 года, если бы вы сами написали чеки.

Ваш формат выглядит как строка ISO8601. Итак, используйте DateTime :: Format :: ISO8601 , чтобы выполнить анализ.

use DateTime;
use DateTime::Format::ISO8601;

my $string = '2010-02-28T15:21:33Z';

my $dt = DateTime::Format::ISO8601->parse_datetime( $string );
die "Impossible time" unless $dt;

Вы можете использовать другие модули форматирования, такие как D :: F :: Strptime , но в итоге вы воссоздадите то, что уже делает форматер ISO8601.

4 голосов
/ 18 января 2010

В зависимости от того, что вы делаете, вы можете привести свою строку к объекту DateTime , например ::

use DateTime::Format::MySQL;
my $dt = DateTime::Format::MySQL->parse_datetime( '2003-01-16 23:12:01' );

Затем вы можете легко вывести свою временную строку в другом формате, выполнить с ней вычисления и т. Д.

Вы не указали, что генерирует строку в этом конкретном формате, но есть DateTime :: Format :: modules для большого количества источников ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...