我是perl的新手,任何人都可以在下面命令解释我使用$ t [1]和timelocal(1,1,1,反向@t)的目的是什么。
下面用于将时间戳转换为纪元格式的命令。但请解释我使用这个命令$ t [1] - 和timelocal(1,1,1,反向@t)。
perl -MTime::Local=timelocal -e '@t = split(/[-\/]/, $ARGV[0]); $t[1]--; print timelocal(1,1,1,reverse @t);' $date
答案 0 :(得分:3)
一个例子是按顺序:
perl -MTime::Local=timelocal -e '
@t = split(/[-\/]/, $ARGV[0]);
$t[1]--;
print timelocal(1,1,1,reverse @t);
' "2016-10-18"
将打印出一个纪元日期(自1970年1月1日起的秒数)
1476766861
查看文档:{{3}}我们看到:
值得特别注意所提供值的预期范围。该月的某天是实际的一天(即1..31), 而月份是自1月份(0..11)以来的月数。这是 与localtime()和gmtime()返回的值一致。
第一个语句将字符串2016-10-18
用破折号和斜杠拆分成数组@t = (2016, 10, 18)
。默认情况下,Perl数组从0开始,因此$t[1]
表示第二项,即月份,此处设置为10
。由于localtime
需要数月(0-11)
,我们需要减去1
,将$t[1]
设置为9
。最后一个语句只是将日期部分转换回纪元时间,反转@t
以匹配timelocal的参数顺序:
# timelocal( $sec, $min, $hour, $mday, $mon, $year )
$time = timelocal( 1, 1, 1, 18, 9, 2016 ); # time in seconds = 1476766861
答案 1 :(得分:1)
它从第一个组件中减去1。 @t数组。 我这是Month字段。 注意:首先[1],而不是Zeroth [0]。
http://www.perlmonks.org/?node_id=665996
此致
韦恩。