在Perl中将月份日期时间年份格式转换为MM-DD-YYYY格式

时间:2012-05-17 17:23:33

标签: perl

我想将以下日期转换为MM-DD-YYYY格式。

Perl中的

Sep 12 00:00:00 2012

3 个答案:

答案 0 :(得分:1)

对于同时提供strptime()和`strftime()'功能的核心模块,您可以使用Time::Piece

use Time::Piece;
my $date = q(Sep 12 01:02:03 2012);
my $t = Time::Piece->strptime($date, "%b %d %H:%M:%S %Y");
print $t->strftime("%m-%d-%Y\n");

答案 1 :(得分:1)

有几个模块可以做到这一点,但Time::Piece可能是最好的选择,因为它自v5.9以来一直是核心Perl发行版的一部分。

此代码可以满足您的要求。请注意,%e格式的strptime预计从131的天数。如果将该日期填充为零,则必须使用%d来代替01 31

use strict;
use warnings;

use Time::Piece;

my $dt = Time::Piece->strptime('Sep 12 00:00:00 2012', '%b %e %T %Y');
print $dt->strftime('%d-%m-%Y');

<强>输出

12-09-2012

答案 2 :(得分:0)

使用DateTime::Format::Strptime

use DateTime::Format::Strptime qw( );

my $input_format = DateTime::Format::Strptime->new(
   pattern   => '%b %d %H:%M:%S %Y',
   locale    => 'en_US',
   time_zone => 'local',
   on_error  => 'croak',
);

my $dt = $input_format->parse_datetime('Sep 12 00:00:00 2012');
say $dt->strftime('%m-%d-%Y');