我想将包含一年中月份的格式的数据转换为更加标准的格式dd / mm / yy,如Jan,Feb,Mar ...等。
我正在考虑将与月份相关联的文本存储在哈希中。结果应该是这样的。
INPUT OUTPUT
"DATE,04-Sep-2014" -> "04/09/14"
答案 0 :(得分:4)
Time::Piece是自v5.9.5以来的核心模块:
use Time::Piece;
print localtime
->strptime('DATE,04-Sep-2014', 'DATE,%d-%b-%Y')
->strftime('%d/%m/%y');
<强>输出强>
04/09/14
答案 1 :(得分:1)
这将满足您的需求而无需使用任何令人讨厌的模块。
use strict;
use warnings;
print transform_date('DATE,04-Sep-2014');
{
my (%months, $months_re);
sub transform_date {
my ($date_str) = @_;
unless ($months_re) {
@months{qw/ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec /} = 1 .. 12;
$months_re = join '|', keys %months;
$months_re = qr/(?:$months_re)/;
}
return unless my ($d, $m, $y) = $date_str =~ /(\d\d)-($months_re)-(\d\d\d\d)/;
sprintf '%02d/%02d/%02d', $d, $months{$m}, $y % 100;
}
}
<强>输出强>
04/09/14