2014-11-21 86 views
-2

我想將日期時間格式轉換爲我想要的。如何在Perl中更改日期時間格式?

如何將日期時間格式從2014年11月21日15:04:32轉換爲2014-11-21 15:04:32?

感謝

+0

你想使用和日期模塊或想在普通的Perl中做? – run 2014-11-21 05:19:52

+0

如何在普通perl中完成? – galuschka 2014-11-21 05:23:48

+0

'POSIX :: strftime()'在覈心,是「純」嗎? – 2014-11-21 05:32:36

回答

1
my $str = 'Fri Nov 21 2014 15:04:32'; 
my @months =('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'); 
my ($day,$mon,$date,$year,$time) = split(' ',lc($str)); 
my %month_hash; 
@month_hash{@months} = (1 .. 12); 
print "$year-$month_hash{$mon}-$date $time"; 

試試這個的原油方法,但適用於您的需求。使用日期::操作靈活使用

+0

日期:Manip從來不是一個好建議。 Time :: Piece自2007年以來一直是核心Perl的一部分。 – 2014-11-21 11:14:54

+0

謝謝Dave我使用了Date :: Manip它後面很久,任何Time :: Piece將如何看看,再次感謝您的建議。 – run 2014-11-21 11:17:50

+2

任何解決方案,你開始必須建立自己的哈希或月份名稱列表將是可怕的。有一些功能可以解析 - 在這裏是'strptime'。如果你維護自己的哈希,它將不會正確地本地化。 – LeoNerd 2014-11-21 14:24:20

2

Time::Piece多年來一直是核心Perl。

使用strptime(字符串解析時間)解析您的日期/時間字符串。

使用strftime(字符串格式化時間)根據需要設置日期/時間的格式。

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 
use Time::Piece; 

# Formats are defined in "man strftime" 
my $in_fmt = '%a %b %d %Y %H:%M:%S'; 
my $out_fmt = '%Y-%m-%d %H:%M:%S'; 

my $in_date = 'Fri Nov 21 2014 15:04:32'; 

my $date = Time::Piece->strptime($in_date, $in_fmt); 
my $out_date = $date->strftime($out_fmt); 

say $out_date;