将破折号添加到Perl中的日期

时间:2015-12-23 20:50:21

标签: perl formatting

我需要能够获取Perl字符串(YYYYMMDD格式的日期)并添加破折号(使其成为YYYY-MM-DD)格式。是否有捷径可寻?例如,对于1900年1月1日,我将输入19000101,如果需要1900-01-01,则需要输入。

4 个答案:

答案 0 :(得分:5)

在日期上没有进行验证的意义上并不是特别好,但如果您已经知道自己正在使用有效日期,那么这既简单又快速:

$ perl -wle 'print join("-", unpack("A4A2A2", "19000101"))'
1900-01-01

可以使用任何字符串---甚至是非日期 - 可以是加号还是减号,具体取决于你如何看待它:

$ perl -wle 'print join("-", unpack("A4A2A2", "YYYYMMDD"))'
YYYY-MM-DD

答案 1 :(得分:4)

自从我玩perl以来已经有一段时间,但这里有另一个答案:

my $d = '19000101';
$d =~ s/(\d{4})(\d{2})(\d{2})/$1-$2-$3/;
print $d;

将输出:

1900-01-01

或者根据需要切换$ 1,$ 2,$ 3格式:

$d =~ s/(\d{4})(\d{2})(\d{2})/$3-$2-$1/;

将输出:

01-01-1900

答案 2 :(得分:4)

如果您想要更一般的答案,可以考虑使用Time::Piece模块。

{{1}}

答案 3 :(得分:3)

substr($date,$_,0) = '-' for (6,4);

$date是要更改的日期。