Привіт, я використовую 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()
є -
(тире).