我需要打开今天日期和昨天日期的文件我可以打开今天的文件,但我不知道如何打开昨天,我使用当地时间,因为我的perl版本是5.8.8。 所以其他时间/日期模块不可用 这就是我到目前为止所拥有的
#!/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);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
$year = $year+1900;
print "c:\\DBR_$year\\$months[$mon]\\Failures_output\\$mday$months[$mon]report.csv"
|| die "can't open output file for reading: $!";
打印
c:\DBR_2014\May\Failures_output\5Mayreport.csv
现在我如何用昨天的日期打开相同的文件
答案 0 :(得分:3)
localtime
/ mktime
往返将为您提供昨天开始午夜的纪元编号(即mday
比现在少1的时间)
use POSIX 'mktime';
my @now = localtime();
my $yesterday = mktime 0, 0, 0, $now[3]-1, $now[4], $now[5];
然后你可以把它放到strftime
中给你时间字符串;你不需要像这样的几个月的数组
use POSIX 'strftime';
my $path = strftime("c:\\DBR_%Y\\%b\\Failures_output\\%d%breport.csv", localtime($yesterday));
(您不必担心mday
已经为1的情况,因为mktime
会妥善处理这个问题。
答案 1 :(得分:0)
localtime
可以使用一个纪元秒的参数,所以请到昨天的日期,只需致电
@yesterday = localtime( time - 86400 ); # 86400 = 24 * 60 * 60