没有日期 -d 选项的 Solaris 上的 Unix 时间 +n 天

Unix time +n days on Solaris without date -d option

我正在寻找 return 日期加(或减)n 天的方法。我们的Solaris 10系统没有日期的-d选项,甚至在/usr/xpg4/bin/date.

下也没有

我考虑过 perl,在另一个线程上找到了几个例子,但系统不包括

use Time::ParseDate;
use Time::CTime;

也不

use DateTime;
use DateTime::Format::Strptime;

我们的系统受到严格监管,因此我不能指望安装此处不存在的任何实用程序或库。

欢迎提出任何其他建议。

不太确定你想要什么。

一些可能有帮助的例子:

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

Perl 的 Time::Piece 模块自 perl v5.10

以来一直是核心发行版的一部分

你没有说你想要什么格式的日期,但这会提前一天生成 YYYY-MM-DD

格式的日期
perl -MTime::Piece -E 'say((gmtime()+24*60*60)->ymd)'

输出

2018-04-17
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 来获得不同的日期