转换日期格式Perl

时间:2017-04-13 21:41:08

标签: string perl date

我的日期为YYYYMMDD格式,需要DD-MON-YYYY格式。例如,如果我输入19001201,那么我想要01-DEC-1900输出。有一种简单的方法可以做到这一点吗?即我目前正在拆分字符串,然后使用哈希转换月份... Perl中的哪些模块可以轻松编辑日期?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我通常更喜欢DateTime而非Time::Piece,但Time :: Piece具有成为核心模块的优势,在这种情况下,它可以满足您的所有需求。

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