2010-09-21 107 views
2

我目前的日期爲2010年1月10日我需要將其轉換爲2010年10月1日。是否有任何模塊可以轉換?如何在Perl中將日期轉換爲所需的格式?

+1

當您想知道是否有模塊時,請轉至[CPAN](http://search.cpan.org)查找。 – 2010-09-21 12:01:53

回答

16

使用DateTime::Format::Strptime

use DateTime::Format::Strptime; 
my $Strp = DateTime::Format::Strptime->new(
        pattern  => '%d/%m/%Y', 
        time_zone => 'UTC', 
       ); 
my $dt = $Strp->parse_datetime('1/10/2010'); 
print $dt->strftime('%d %b %Y'); 

編輯:感謝@davorg提示new

+4

請不要推薦間接對象符號。 「Datetime :: Format :: Strptime-> new(..)」,而不是「new DateTime :: Format :: Strptime(...)」。間接符號在大多數情況下都適用。但如果沒有,你會浪費時間來追蹤問題。 – 2010-09-21 10:38:09

+0

比UTC更好地使用浮動時區。 (漂浮意味着「我不在乎」,而UTC可能不是這些日期的正確時區)。最終結果是相同的。 你可以通過「time_zone =>'浮動',或者說保留它 - 這是默認的。 – mscha 2010-09-21 11:07:42

+0

非常感謝.....它的工作 – Anil 2010-09-21 13:23:31

3

你可以試試:

my $date = '1/10/2010'; 
my @abbr = qw(dummy Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); 
my($d,$m,$y) = split/\//g,$date; 
my $new_date = $d.' '.$abbr[$m].' '.$y; 
相關問題