从perl

时间:2017-10-21 08:11:28

标签: perl datetime

您好我正在使用Perl的DateTime来解析字符串并将其转换为日期格式。

我的代码在这里看起来像这样:

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,是否有更简洁的方法来获得两位数的月/日而不在数字前加零?

2 个答案:

答案 0 :(得分:3)

使用sprintf(或printf,如果你打算打印它)。

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

它将填充您的输入。请查看the documentation以了解有关格式参数的更多信息。

答案 1 :(得分:2)

你也可以获得所有这些,因为你可能需要它们

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

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

DateTime::ymd()的默认分隔符为-(破折号)。