我如何获得当前年份的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
。
答案 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日)