Как я могу проверить даты в Perl? - PullRequest
6 голосов
/ 18 ноября 2008

Как я могу проверить строки даты в Perl? Я хотел бы учитывать високосные годы, а также часовые пояса. Кто-то может вводить даты в следующих форматах:

11/17/2008
11/17/2008 3pm
11/17/2008 12:01am
11/17/2008 12:01am EST
11/17/2008 12:01am CST

Ответы [ 3 ]

10 голосов
/ 18 ноября 2008

Я использую DateTime :: Format :: DateManip для подобных вещей. Используя ваши даты ....

use DateTime::Format::DateManip; 

my @dates = (
    '11/17/2008',
    '11/17/2008 3pm',
    '11/17/2008 12:01am',
    '11/17/2008 12:01am EST',
    '11/17/2008 12:01am CST',
);

for my $date ( @dates ) {
    my $dt = DateTime::Format::DateManip->parse_datetime( $date );
    die "Cannot parse date $date"  unless defined $dt;
    say $dt;
}

# no dies.. produced the following....
# => 2008-11-17T00:00:00
# => 2008-11-17T15:00:00
# => 2008-11-17T00:01:00
# => 2008-11-17T05:01:00
# => 2008-11-17T06:01:00

NB. Я здесь по Гринвичу!

9 голосов
/ 18 ноября 2008

CPAN имеет много пакетов для работы с датами, таких как DateTime и Date :: Manip . Для анализа вашей даты модуль Date :: Parse в TimeDate может работать (да, есть и DateTime, и TimeDate).

В общем, когда вам нужно что-то сделать в Perl, проверьте CPAN. Там, вероятно, модуль для этого. Посмотрите, что доступно, и посмотрите, что подходит к вашей ситуации.

Удачи, :)

0 голосов
/ 18 ноября 2008

Я опубликую свои ответы здесь, когда найду их.

использовать время :: Местное
http://www.perlmonks.org/?node_id=642627

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