您好,我正在使用 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();
Run Code Online (Sandbox Code Playgroud)
当我打印月份时,我只得到 4,或者如果日期更改为小于 10 的数字,我得到一个个位数的数字。
如果数字小于 10,是否有更简洁的方法来获取两位数的月份/日期,而无需在数字前加上零?
使用 sprintf(或 printf,如果您只是要打印它)。
my $month = sprintf("%02d", $startDate->month());
Run Code Online (Sandbox Code Playgroud)
它将对您的输入进行零填充。查看文档以了解有关格式参数的更多信息。
也可以获得所有这些,因为您可能需要它们
my ($year, $mon, $day) = unpack "A4A2A2", $startDate->ymd('');
Run Code Online (Sandbox Code Playgroud)
或者
my ($year, $mon, $day) = split /-/, $startDate->ymd();
Run Code Online (Sandbox Code Playgroud)
DateTime::ymd的默认分隔符是-(破折号)。
这两种方法都会产生两位数的月份和日期。