2008-11-17 24 views
6

¿Cómo puedo validar las cadenas de fechas en Perl? Me gustaría explicar los años bisiestos y también las zonas horarias. Alguien puede introducir fechas en los siguientes formatos:¿Cómo puedo validar las fechas en 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 

Respuesta

10

utilizo DateTime::Format::DateManip para cosas como esta. Usando sus fechas ...

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. ¡Estoy en GMT aquí!

9

CPAN tiene muchos paquetes para hacer frente a las fechas, tales como DateTime y Date::Manip. Para analizar su fecha, el módulo Date :: Parse en TimeDate podría funcionar (sí, hay DateTime y TimeDate).

En general, siempre que necesite hacer algo en Perl, marque CPAN. Probablemente haya un módulo para eso. Mira lo que está disponible y mira lo que se adapta a tu situación.

Buena suerte, :)

+0

Tenga en cuenta que Date :: Parse no detectará correctamente las fechas no válidas. Por ejemplo: '1995-01-41T09: 08: 17' se interpreta como' 1995-02-10T09: 08: 17' – Tincho

Cuestiones relacionadas