有没有办法从日期中减去一个月或在 unix 中至少减去 30 天。
例子:
[yyy-mm-dd] - 30 天
2011-07-23 - 30 天
顺便说一下,日期可以是任何日期,具体取决于用户输入。
谢谢。
对于任意日期,
$ date -d "2011-07-23 - 1 month" "+%F"
2011-06-23
$ date -d "2011-07-23 - 30 days" "+%F"
2011-06-23
$ date -d "2011-08-23 - 1 month" "+%F"
2011-07-23
$ date -d "2011-08-23 - 30 days" "+%F"
2011-07-24
Run Code Online (Sandbox Code Playgroud)
这是 GNU 日期
如果没有 GNU 日期,您可以退回到 perl。Time::Piece 和 Time::Seconds 模块应该在 perl 5.12 中可用
perl -MTime::Piece -MTime::Seconds -e '
print "date\t-1 month\t-30 days\n";
while (@ARGV) {
my $t = Time::Piece->strptime(shift, "%Y-%m-%d");
print $t->ymd, "\t";
print $t->add_months(-1)->ymd, "\t";
$t -= 30*ONE_DAY;
print $t->ymd, "\n";
}
' 2011-07-23 2011-08-23
Run Code Online (Sandbox Code Playgroud)
date -1 month -30 days
2011-07-23 2011-06-23 2011-06-23
2011-08-23 2011-07-23 2011-07-24
Run Code Online (Sandbox Code Playgroud)