【问题标题】:Getting two digit month and date from DateTime in perl在 perl 中从 DateTime 获取两位数的月份和日期
【发布时间】:2017-10-21 08:11:28
【问题描述】:

您好,我正在使用 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,是否有更简洁的方法来获取两位数的月份/日期,而无需在数字前添加零?

【问题讨论】:

    标签: perl datetime


    【解决方案1】:

    也可以全部获得,因为您可能需要它们

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

    或

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

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

    这两种方法都产生两位数的月份和日期。

    【讨论】:

      【解决方案2】:

      使用 sprintf(或 printf,如果您只是要打印它)。

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

      它将对您的输入进行零填充。查看the documentation 了解更多关于格式参数的信息。

      【讨论】:

        猜你喜欢
        • 2013-03-08
        • 1970-01-01
        • 2022-01-06
        • 2017-11-27
        • 1970-01-01
        • 2018-06-15
        • 2017-01-19
        • 1970-01-01
        相关资源
        最近更新 更多