【发布时间】:2014-10-29 14:30:58
【问题描述】:
我是 perl 的初学者,正在尝试我的第一个 perl 脚本来将 epoch-sconds 中的时间信息转换为特定格式。我从其他 stackoverflow 问题中了解到 perl 中的 Jan = 0 月和 1900 = 0 年。即使对它们进行了调整,我也没有看到 unix 和 perl 之间的输出相同。
这是我尝试并得到的。
Unix:
日期 -d @915149280
给我:
1998 年 12 月 31 日星期四 19:08:00 EST
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 Fri
perl 行有什么错误吗?我应该怎么做才能获得与 date 命令相同的输出? (不是格式化部分,而是时间)
我不是在寻找所有领域,只有年份对我来说很重要。
【问题讨论】:
-
时区。你正好赶上 5 个小时。任何时候你得到一个确切的小时数不同的时差,这几乎是 99.999999% 的时区问题
-
除时区差异外,大部分字段应使用
printf和"%02d"打印。 -
@KeithThompson:不,他/她应该使用 POSIX::strftime(或其他模块的 strftime)来打印所有字段 :)
标签: perl unix unix-timestamp