如何在perl中将纪元秒转换为正常时间?

时间:2017-11-15 05:26:12

标签: perl date

我有一串纪元秒" 1510652305"当我使用

在unix命令行上转换为正常时间时
`date -d @1510652305`
我明白了 Tue Nov 14 15:08:25 IST 2017

但是当我使用类似的东西在perl中尝试它时

use POSIX qw(strftime);
use Time::Local;
use Time::localtime;

$kickoff_time=1510652305;
$kickoff_time=ctime($kickoff_time);

我得到了

Thu Jan 1 05:30:00 1970

如何实现我在perl中获取linux的结果?

谢谢!

2 个答案:

答案 0 :(得分:6)

不要过分思考它!

my $kickoff_time = localtime 1510652305;
say $kickoff_time; # Tue Nov 14 15:08:25 2017

如果你绝对正确地需要那里的时区:

use POSIX qw{strftime};

my $kickoff_time = strftime '%a %b %e %H:%M:%S %Z %Y', localtime 1510652305;
say $kickoff_time; # Tue Nov 14 15:08:25 IST 2017

请注意,这是与语言环境相关的。

答案 1 :(得分:3)

我建议使用Time::Piece来完成这项工作 - 它是perl的核心。

#!/usr/bin/env perl

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

my $t = localtime ( 1510652305 );

print $t;

它会打印默认格式,或者您可以使用strftime格式化。

相关问题