用Perl计算日期
我试图从输入的日期开始计算未来七天零四小时的日期/时间,并以可读格式打印出来 我有:用Perl计算日期,perl,datetime,Perl,Datetime,我试图从输入的日期开始计算未来七天零四小时的日期/时间,并以可读格式打印出来 我有: print "Enter a date YYYY MM DD. Remember perl's months go from 0-11.\n"; while (@dateEnt < 1) { my $dateEntered = <STDIN>; chomp $dateEntered; push @dateEnt, $dateEntered; (@datedat
print "Enter a date YYYY MM DD. Remember perl's months go from 0-11.\n";
while (@dateEnt < 1) {
my $dateEntered = <STDIN>;
chomp $dateEntered;
push @dateEnt, $dateEntered;
(@datedata) = split (/\s+/, $dateEntered);
$year= $datedata[0];
$month = $datedata[1];
$day = $datedata[2];
}
$time = time;
$readabletime = localtime($time);
use Time::Local;
$timeEntUseable = timelocal(00, 00, 00, $day, $month, $year);
$laterdate = localtime($timeEntUseable + (60 * 60 * 4 * 24));
print "The time 7 days and 4 hours from the time entered is $laterdate\n";
print“输入日期YYYY-MM-DD。记住perl的月份从0到11。\n”;
而(@dateEnt<1){
我的$dateEntered=;
输入chomp$date;
推送@dateEnt,$dateEntered;
(@datedata)=拆分(/\s+/,输入$datedata);
$year=$datedata[0];
$month=$datedata[1];
$day=$datedata[2];
}
$time=时间;
$readabletime=localtime($time);
使用时间::本地;
$timeEntUseable=timelocal(00,00,00,$day,$month,$year);
$laterdate=localtime($timeEntUseable+(60*60*4*24));
打印“从输入的时间算起7天4小时的时间是$laterdate\n”;
当我在第一个问题中输入2015 00 01(2015年1月1日)时,我的结果是2015年1月2日4:00:00。答案应该是2015年1月7日4:00:00。有什么帮助吗 我认为:
$laterdate = localtime($timeEntUseable + (60 * 60 * 4 * 24));
应该是:
$laterdate = localtime($timeEntUseable + (60 * 60 * (24 * 7 + 4)));
2015年1月8日4:00:00的输出是否正确
表示一小时60*60
指7天中的每小时24*7
意味着7天的工作时间增加4小时+4
- 我认为:
$laterdate = localtime($timeEntUseable + (60 * 60 * 4 * 24));
应该是:
$laterdate = localtime($timeEntUseable + (60 * 60 * (24 * 7 + 4)));
2015年1月8日4:00:00的输出是否正确
表示一小时60*60
指7天中的每小时24*7
意味着7天的工作时间增加4小时+4
#/usr/bin/perl
使用警告;
严格使用;
使用时间::件;
使用时间:秒;
我的$date;
截止日期($日期){
打印“输入日期(YYYY/MM/DD):”;
chomp(我的$input=);
$date=eval{'Time::Piece'->strtime($input,'%Y/%m/%d');
}
$date+=7*一天+4*一小时;
打印$date,“\n”;
请注意,结果是2015年1月4日804:00:00,因为
1+7=8
使用Time::Piece和Time::Seconds(核心自5.10起):
#/usr/bin/perl
使用警告;
严格使用;
使用时间::件;
使用时间:秒;
我的$date;
截止日期($日期){
打印“输入日期(YYYY/MM/DD):”;
chomp(我的$input=);
$date=eval{'Time::Piece'->strtime($input,'%Y/%m/%d');
}
$date+=7*一天+4*一小时;
打印$date,“\n”;
请注意,结果是2015年1月4日804:00:00,因为
1+7=8
这里有理由使用eval
?我们不能直接调用Time::Pice->strtime
吗?@skmrx:它处理不正确的输入,如“今天”、“qwerty”等。这里使用eval
有什么原因吗?我们不能直接调用Time::Pice->strtime
吗?@skmrx:它处理不正确的输入,如“今天”、“qwerty”等。