/ / Отримання двозначного місяця та дати від DateTime в перл-перлі, даті

Отримання двох цифр місяця і дати з DateTime в perl - perl, datetime

Привіт, я використовую DateTime Perl для розбору рядка та перетворення його у формат дати.

Мій код тут виглядає приблизно так:

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

Коли я друкую місяць, я отримую лише 4, або якщо дату змінено на число менше 10, я отримую одноцифрове число.

Чи є більш чіткий спосіб отримати двозначний місяць / дату, не попереджуючи нуль перед числом, якщо його менше 10?

Відповіді:

3 для відповіді № 1

Використовуйте sprintf (або printf, якщо ви просто збираєтеся його надрукувати).

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

Він буде нульовим майданчиком вашого вводу. Подивись на документація щоб дізнатися більше про параметр формату.


2 для відповіді № 2

Ви також можете їх отримати, оскільки вони вам, мабуть, потрібні

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

або

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

Розділювач за замовчуванням з Дата, час::ymd() є - (тире).