2010-08-05 10 views

Répondre

5

La chaîne 2010-7-2 13:0:0 n'est pas dans un format valide, et est en fait pas du tout en cours d'analyse (il apparaît), comme en témoigne le fait que parsedate("2010-7-2") renvoie la même valeur que parsedate("2010-7-2 13:0:0") pour moi. Basé sur the docs, il analyse simplement le YYYY-MM-DD, mais n'analyse pas du tout le 13:0:0 car il s'attend à ce qu'il soit au format HH: MM et non au format HH: M. Fondamentalement, vous devez utiliser deux chiffres pour les minutes afin que ce soit une entrée valide.

0

gérer votre format de date avec plus de flexibilité, essayez d'utiliser DateTime :: Format :: strptime

my $strp = DateTime::Format::Strptime->new(
    pattern => '%Y-%m-%d %T', 
    locale => 'en_AU', 
    time_zone => 'Australia/Melbourne', 
); 

my $dt1 = $strp->parse_datetime('2010-7-2 13:0:0'); 
my $date_1 = $strp->format_datetime($dt1); 

DATE_1 $ est maintenant converti en un format de date bien formaté « 2010-07-02 13:00 : 00 ". Ensuite, vous pouvez appeler parsedate ($ date_1) & obtenir l'époque.