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