Perl下将unix时间戳转换为日期时间格式
2014-06-29 20:51:36 阿炯

本站赞助商链接,请多关照。 使用内置localtime函数实现

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($unix_timestamp);

my ($S,$M,$H,$d,$m,$Y) = localtime($time);
$m += 1;
$Y += 1900;
my $dt = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $Y,$m,$d, $H,$M,$S);

与使用strftime日期时间格式化函数相比要麻烦一些。下面使用内置的localtime函数,将时戳转换为本地时间,然后调用strftime函数时行格式化。
use POSIX qw(strftime);
my $dt = strftime("%Y-%m-%d %H:%M:%S", localtime($time));

localtime($time) can be substituted with gmtime($time) if it's more appropriate.

应优先使用Time::Piece模块 (standard in Perl since 5.10)

use 5.010;
use Time::Piece;

my $unix_timestamp = 1404043379; # for example;
my $date = localtime($unix_timestamp)->strftime('%F %T'); # adjust format to taste
say $date; # 2014-06-29 20:02:59

在Time::Piece模块中,localtime和gmtime函数是重新实现的,并与perl内置的函数在使用上是兼容的。


单行应用(one-liner)

perl -le 'print scalar localtime 1357890480;'
Fri Jan 11 15:48:00 2013