Perl下将unix时间戳转换为日期时间格式
使用内置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