我有一个包含值" 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行解析时错误。
答案 0 :(得分:5)
在这一行 - Time::Piece->strptime($date, '%d/%m');
- 您指定了$date
当前的格式错误。第二个参数描述了如何解析字符串,而不是您想要的格式(这是以下行的用法)。
改为使用'%Y%m%d'
。
答案 1 :(得分:3)
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";