使用Perl以dd / mm / yy格式输出日期

时间:2014-09-04 11:49:42

标签: regex perl hash

我想将包含一年中月份的格式的数据转换为更加标准的格式dd / mm / yy,如Jan,Feb,Mar ...等。

我正在考虑将与月份相关联的文本存储在哈希中。结果应该是这样的。

INPUT                       OUTPUT
"DATE,04-Sep-2014"    ->   "04/09/14"

2 个答案:

答案 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