2017-04-13 139 views
-1

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

+1

你尝试过什么,到目前为止,它怎么不工作? –

+0

我有一个很长的代码分裂的日期,然后一个哈希输出值...只是想知道如果Perl有一个像Java一样的“类似日期的”类。 – Padawan

+0

有许多Perl日期模块。 DateTime可能是最好的,但Time :: Piece是核心。 –

回答

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 
0

我通常喜欢在DateTimeTime::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