perl以4位数字格式打印当前年份

时间:2014-04-27 13:20:23

标签: perl

我如何获得当前年份的4位数,这就是我所尝试的

 #!/usr/local/bin/perl

 @months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
 @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
 $year = $year+1900;
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
 print "DBR_ $year\\$months[$mon]\\Failures_input\\Failures$mday$months[$mon].csv \n";

这会打印DBR_ 114\Apr\Failures_input\Failures27Apr.csv

我如何获得2014年?

我使用的是版本5.8.8 build 820

5 个答案:

答案 0 :(得分:10)

use Time::Piece;

my $t = Time::Piece->new();
print $t->year;

答案 1 :(得分:9)

移动线:

$year = $year+1900;

在致电localtime()并成为:

之后
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
$year = $year+1900;

答案 2 :(得分:3)

获得4位数年份的一个选项:

#!/usr/bin/perl

use POSIX qw(strftime);

$year = strftime "%Y", localtime;

printf("year %02d", $year);

答案 3 :(得分:3)

最好的方法是使用核心库Time::Piece。它会覆盖localtime,以便标量上下文中的结果是Time::Piece对象,您可以使用模块提供的许多方法。 (localtime在列表上下文中,正如您在自己的代码中使用它一样,继续提供相同的九元素列表。)

strftime方法允许您根据需要设置日期/时间格式。

这个非常简短的程序产生了我认为你想要的文件路径(我怀疑DBR_之后是否应该有空格?)注意,不需要在单个内加倍反斜杠引用字符串,除非它是字符串的最后一个字符。

use strict
use warnings;

use Time::Piece;

my $path = localtime->strftime('DBR_%Y\%b\Failures_input\Failures%m%d.csv');

print $path;

<强>输出

DBR_2014\Apr\Failures_input\Failures27Apr.csv

答案 4 :(得分:1)

您也可以使用

my($ y,$ m,$ d)=日期:: Calc :: Today();

$ y变量将包含 2019
$ m变量将包含 8
$ d变量将包含 9

撰写此答案时(2019年8月9日)