我有 YYYYMMDD 格式的日期,需要它采用 DD-MON-YYYY 格式。例如,如果我输入19001201,那么我希望输出 01-DEC-1900。有没有一种简单的方法可以做到这一点?即我目前正在拆分字符串,然后使用哈希转换月份......Perl 中的哪些模块可以轻松编辑日期?
use DateTime::Format::Strptime qw( );
my $format1 = DateTime::Format::Strptime->new(
pattern => '%Y%m%d',
on_error => 'croak',
);
my $format2 = DateTime::Format::Strptime->new(
pattern => '%d-%b-%Y',
locale => 'en',
on_error => 'croak',
);
my $dt = $format1->parse_datetime('19001201');
say uc($format2->format_datetime($dt)); # 01-DEC-1900
我通常更喜欢DateTime而不是Time::P iece,但是Time::P iece具有作为核心模块的优势,在这种情况下,它可以完成您需要的一切。
use strict;
use warnings;
use 5.010;
use Time::Piece;
while (<DATA>) {
chomp;
say Time::Piece->strptime($_, '%Y%m%d')->strftime('%d-%b-%Y');
}
__DATA__
19001201
20170417
20170505
输出:
01-Dec-1900
17-Apr-2017
05-May-2017