Bonjour, j’utilise DateTime de Perl pour analyser une chaîne et la convertir au format de date.
Mon code ici ressemble à 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 ne reçois que 4, ou si la date est changée en un nombre inférieur à 10, je reçois un nombre à un chiffre.
Existe-t-il un moyen plus propre d’obtenir le mois / la date à deux chiffres sans ajouter de préfixe un zéro avant le numéro s’il est inférieur à 10?
Réponses:
3 pour la réponse № 1Utilisez sprintf (ou printf, si vous voulez l’imprimer).
my $month = sprintf("%02d", $startDate->month());
Cela mettra votre entrée dans le zéro. Jeter un coup d'œil à La documentation pour en savoir plus sur le paramètre de format.
2 pour la réponse № 2
Vous pouvez également les obtenir tous, car vous en aurez probablement besoin
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 -
(tiret).