/ / Pobieranie dwucyfrowego miesiąca i daty z DateTime w perl - perl, datetime

Uzyskiwanie dwucyfrowego miesiąca i daty z DateTime w perlu - perl, datetime

Witam Używam Perl's DateTime do parsowania łańcucha i konwertowania go na format daty.

Mój kod wygląda tak:

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();

Kiedy drukuję miesiąc, dostaję tylko 4, lub jeśli data zostanie zmieniona na liczbę mniejszą niż 10, otrzymam liczbę jednocyfrową.

Czy istnieje bardziej przejrzysty sposób uzyskania dwucyfrowego miesiąca / daty bez uprzedniego dodania zera przed liczbą, jeśli jest ona mniejsza niż 10?

Odpowiedzi:

3 dla odpowiedzi № 1

Użyj sprintf (lub printf, jeśli chcesz go wydrukować).

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

Zeruje twoje wejście. Spojrzeć na dokumentacja aby dowiedzieć się więcej o parametrze formatu.


2 dla odpowiedzi nr 2

Możesz także dostać je wszystkie, ponieważ prawdopodobnie będziesz ich potrzebować

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

lub

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

Domyślny separator z DateTime ::ymd() jest - (dziarskość).