2017-10-21 58 views
1

Bonjour J'utilise Perl's DateTime pour analyser une chaîne et la convertir en format de date.Obtention du mois et de la date à deux chiffres à partir de DateTime en perl

Mon code ressemble ici comme ceci:

my $parser = DateTime::Format::Strptime->new(pattern => "%Y-%m-%dT%H:%M:%SZ", time_zone => 'UTC', on_error => 'croak'); 
my $startDate = $parser->parse_datetime("2017-04-14T21:00:00Z"); 
my $endDate = $parser->parse_datetime("2017-04-14T23:00:00Z"); 
print $startDate->month(); 

Lorsque j'imprime le mois, je reçois seulement 4, ou si la date est changée en un nombre inférieur à 10, je reçois un seul chiffre.

Existe-t-il un moyen plus propre d'obtenir le mois/date à deux chiffres sans précéder un zéro avant le numéro s'il est inférieur à 10?

Répondre

3

Utilisez sprintf (ou printf, si vous voulez simplement l'imprimer).

my $month = sprintf("%02d", $startDate->month()); 

Il mettra à zéro votre entrée. Jetez un oeil à the documentation pour en savoir plus sur le paramètre de format.

2

Vous pouvez également obtenir tous, que vous aurez probablement besoin de les

my ($year, $mon, $day) = unpack "A4A2A2", $startDate->ymd(''); 

ou

my ($year, $mon, $day) = split '-', $startDate->ymd(); 

Le séparateur par défaut avec DateTime::ymd() est - (tableau de bord).