我正在寻找一种方法来返回日期加上(或减去)n天。我们的Solaris 10系统没有日期的-d选项,甚至没有/ usr / xpg4 / bin / date。
我考虑过perl,在另一个线程上找到了几个例子,但系统不包括
use Time::ParseDate;
use Time::CTime;
,也不
use DateTime;
use DateTime::Format::Strptime;
我们的系统受到严格管制,因此我不能指望安装任何尚未安装的实用程序或库。
欢迎任何其他建议。
答案 0 :(得分:2)
不完全确定你想要什么。
可能会有所帮助的一些例子:
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' 3 #in 3 days
Thu Apr 19 23:13:53 2018
perl -e'$days=shift; print "".localtime(time + $days*24*3600)' -- -7 #a week ago
Mon Apr 9 23:14:16 2018
chmod +x date_formatted.pl
cat date_formatted.pl
#!/usr/bin/perl
for(@ARGV){
my @lt=localtime( time() + $_*24*3600 );
printf "%04d-%02d-%02dT%02d:%02d:%02d\n",
$lt[5]+1900,
$lt[4]+1,
@lt[3,2,1,0];
}
./date_formatted.pl -2
2018-04-14T23:25:21
./date_formatted.pl 3
2018-04-19T23:25:21
./date_formatted.pl 0.5
2018-04-17T11:25:21
./date_formatted.pl -1 0 1
2018-04-15T23:25:21
2018-04-16T23:25:21
2018-04-17T23:25:21
如果您被允许,请安装Date::Manip
并查看http://search.cpan.org/~sbeck/Date-Manip-6.70/lib/Date/Manip/Examples.pod#TO_ADD_AN_AMOUNT_OF_TIME_TO_A_DATE
答案 1 :(得分:2)
perl -e 'use strict;use warnings;use POSIX; my $date_folder_to_be_deleted=strftime "%Y-%m-%d",localtime(time() - 24*60*60); print "$date_folder_to_be_deleted"'
希望这是有效的,如果是,你可以使用for循环通过将循环变量乘以24 * 60 * 60 * n来获得不同的日期
答案 2 :(得分:1)
自perl v5.10起,Perl的Time::Piece
模块已成为核心发行版的一部分
您没有说明日期的格式,但这会以格式YYYY-MM-DD
perl -MTime::Piece -E 'say((gmtime()+24*60*60)->ymd)'
2018-04-17