我是perl的初学者,并尝试使用我的第一个perl脚本将时间信息转换为特定格式。我理解其他stackoverflow问题中的月份Jan = 0和1900年= 0 in perl。即使在调整它们之后,我也没有在unix和perl之间看到相同的输出。
这是我尝试过的东西。
Unix的:
date -d @ 915149280
给了我:
Thu Dec 31 19:08:00 EST 1998
的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";
给了我:
形成时间= 1/1/1999 0:8:0周五
perl行中有错误吗?我该怎么做才能获得与date命令相同的输出? (不是格式化部分,而是时间)
我不是在寻找所有的领域,只有这一年对我很重要。
答案 0 :(得分:5)
我假设您正在讨论时差而不是格式差异,因为您的Perl代码甚至没有尝试复制该格式。
使用localtime
代替gmtime
。 date
命令默认使用您的本地时间。请注意,它显示“EST”,但gmtime
返回UTC,这是一个5小时的差异。
您还应该考虑使用模块来处理日期格式。但这不会阻止当地时间与UTC之间的混淆。
答案 1 :(得分:1)
Time::Piece已包含在Perl中近7年,将使您的时间和日期代码变得更加容易。
use Time::Piece;
my $then = gmtime(915149280);
print $then->strftime('%d-%m-%Y %H:%M:%S %a'); # produces 01-01-1999 00:08:00 Fri
答案 2 :(得分:0)