perl中的日期转换

adi*_*one 0 perl perl-module

我正在使用perl来访问我从DD-MON-YYYY格式获取日期的数据库.我需要执行2个操作:

  1. 将此格式转换为MM/DD/YYYY格式.
  2. 将此日期与两个日期进行比较,以查看它是否位于该时间范围内.

    我的$ chdate = '15 -Feb-2013';

    sub get_stats {

    my %map = ( 'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04',
                'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08',
                'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12');
    
        $chdate =~ s/(..)-(...)-(....)/$map{$2}\/$1\/$3/;
        print "New date: $chdate";
    
    Run Code Online (Sandbox Code Playgroud)

    }

我如何执行(2)操作?

我有一个旧版本的Perl(没有Time :: Piece模块),我没有权限更新:)

Bor*_*din 5

我建议你使用这个Time::Piece模块.它是Perl5 v9.5以来的核心模块,因此可能不需要安装.

只需使用日期解码日期strptime并重新编码即可strftime.

use strict;
use warnings;

use Time::Piece;

my $date = '28-jul-1986';

print Time::Piece->strptime($date, '%d-%b-%Y')->strftime('%m/%d/%Y');
Run Code Online (Sandbox Code Playgroud)

产量

07/28/1986
Run Code Online (Sandbox Code Playgroud)