perl中localtime`time`的用途是什么?

时间:2011-10-04 10:37:07

标签: perl

我尝试了第一个perl程序,如下所示:

print "My First Perl Program!\n";
$name ="Anto Aravinth";
print "Hello $name your age now is ";
$byear = 1991;
my($se,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime time;
$age=($year+1900)-$byear;
print $age;

产生输出:

My First Perl Program!
Hello Anto Aravinth your age now is 20

我理解逻辑,但有些疑惑。在这一行my($se,$min,$hour,$mday,$mon,$year,$wday,$yday) = localtime time;我知道它将当前时区值返回到9个不同的变量。现在我想知道time在这一行中是什么,因为没有time我也得到了输出。那么是否需要插入time

我希望直接获取year而不输入所有9个名称,有没有办法这样做?

3 个答案:

答案 0 :(得分:7)

time返回当前时间,以系统纪元以来的秒数计算。 (通常:1970-01-01 00:00 UTC,但请参阅documentation以获取例外情况。)

localtime需要以该格式表示的时间,并返回与(在当前时区)对应的日期中人类可理解的部分。

如果你没有给localtime提出论据,

  

“localtime()”使用当前时间(由时间(3)返回)。

所以你可以在你的案例中省略time的表达式。

如果你只关心这一年,你可以这样做:

my $se = (localtime)[5];

虽然我更喜欢更明确:

my $se = (localtime(time()))[5];

答案 1 :(得分:7)

第一个寻找这类问题答案的地方是Perl文档。 documentation for localtime包含您第一个问题的答案。

  

如果省略EXPR,则localtime()使用当前时间(由返回值返回)   时间(3))。

其他人已经给出了一种方法,可以从本地时间获得一年(使用列表切片),但是文档提到了Time::localtime模块,该模块提供了不同的方法。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

use Time::localtime;

say 'The year is ', localtime->year + 1900;

答案 2 :(得分:2)

Perl联机帮助页指出“如果省略EXPR,”localtime()“使用当前时间(由time(3)返回)。”,因此您不需要显式调用时间函数。

关于第二个问题,你可以简单地做

print 1900 + (localtime)[5]

直接访问年份信息。