Perl时间与Unix日期输出不一致

Jey*_*Jey 1 unix perl unix-timestamp

我是perl的初学者,并尝试使用我的第一个perl脚本将时间信息转换为特定格式.我理解其他stackoverflow问题中的月份Jan = 0和1900年= 0 in perl.即使在调整它们之后,我也没有在unix和perl之间看到相同的输出.

这是我尝试过的东西.

Unix的:

date -d @ 915149280

给我:

美国东部时间1998年12月31日19:08:00

Perl的:

$time = 915149280;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
$year = $year + 1900;
$mon = $mon + 1;
print "Formated time = $mday/$mon/$year $hour:$min:$sec $weekday[$wday]\n";
Run Code Online (Sandbox Code Playgroud)

给我:

形成时间= 1/1/1999 0:8:0周五

perl行中有错误吗?我该怎么做才能获得与date命令相同的输出?(不是格式化部分,而是时间)

我不是在寻找所有的领域,只有这一年对我很重要.

cjm*_*cjm 5

我假设您正在讨论时差而不是格式差异,因为您的Perl代码甚至不会尝试复制该格式.

localtime而不是gmtime.该date命令默认使用您的本地时间.请注意,它显示"EST",但gmtime返回UTC,相差5小时.

您还应该考虑使用模块来处理日期格式.但这不会阻止本地时间和UTC之间的混淆.