Perl中的日期格式

时间:2014-07-20 09:52:35

标签: perl

我有一个包含值" 20140720"的变量。我需要将其更改为格式" 20/07"。

我的代码如下所示。

#!/usr/bin/perl

use strict;
use warnings;
use Time::Piece;

my $date = '20140720';

my $date_format = Time::Piece->strptime($date, '%d/%m');
my $new_date = $date_format->strftime('%d/%m');
print $new_date;

执行期间出现以下错误。

  

在/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Time/Piece.pm第470行解析时错误。

3 个答案:

答案 0 :(得分:5)

在这一行 - Time::Piece->strptime($date, '%d/%m'); - 您指定了$date 当前的格式错误。第二个参数描述了如何解析字符串,而不是您想要的格式(这是以下行的用法)。

改为使用'%Y%m%d'

答案 1 :(得分:3)

使用固定字符串,您应该使用pack / unpack函数:

use strict;
use warnings;

my $date = '20140720';

my (undef, $m, $d) = unpack 'A4A2A2', $date;

print "$d/$m";

答案 2 :(得分:2)

如果您不需要进一步处理日期,使用简单的正则表达式可能更简单:

use strict;
use warnings;

my $date = '20140720';
my $new_date = $date;
$new_date =~ s!\d{4}(\d{2})(\d{2})$!$2/$1!;

print $new_date, "\n";