/ / Obtenir deux mois de mois et la date de DateTime en perl - perl, date / heure

Obtenir le mois et la date à deux chiffres de DateTime dans perl - perl, date / heure

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 № 1

Utilisez 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).