7
4

12 回答 12

18

尝试这个:

date --date="yesterday" +%Y/%m/%d
于 2013-04-16T03:50:11.607 回答
8

您可以使用

date -d "30 days ago" +"%d/%m/%Y"

要获取 30 天前的日期,同样您可以将 30 替换为 x 天数

于 2015-03-16T16:29:37.197 回答
8
dtd="2015-06-19"
yesterday=$( date -d "${dtd} -1 days" +'%Y_%m_%d' )
echo $yesterday;
于 2015-06-30T17:44:33.383 回答
5

为了使用 date 命令获得 1 天的回溯日期:

date -v -1d它将给出 (current date -1) 表示 1 day before 。

date -v +1d 这将使 (current date +1) 表示 1 天后。

类似地,下面的书面代码可以用来代替d找出年、月等

y-Year, m-Month w-Week d-Day H-Hour M-Minute
S-Second

于 2014-04-24T12:03:56.053 回答
4

这里建议的几个解决方案假设GNU coreutils系统上存在。以下应该适用于 Solaris:

TZ=GMT+24 date +’%Y/%m/%d’
于 2013-04-16T04:58:03.980 回答
2

以下脚本将前一个日期打印到targetDate(指定日期或给定日期)

targetDate=2014-06-30
count=1
startDate=$( echo `date -d "${targetDate} -${count} days" +"%Y-%m-%d"`)
echo $startDate
于 2014-09-11T09:06:41.923 回答
1

SunOS 附带传统的 BSD 用户空间工具,这些工具通常缺乏预期的现代选项。看看您是否可以获得 XPG 附加组件(类似于/usr/xpg4/bin/date)或安装 GNUcoreutils软件包(如果可以)。

同时,您可能需要编写自己的简单日期处理脚本。网上有很多例子,例如 Perl。例如这个

vnix$ perl -MPOSIX=strftime -le 'print strftime("%Y%m", localtime(time-86400))'
201304

(如果您与链接后面的内容进行比较,则稍作调整。)

于 2013-04-16T03:40:38.750 回答
0

我已使用以下解决方法来获得所需的解决方案。

timeA=$(date +%Y%m)
sysD=$(date +%d)
print "Initial sysD $sysD">>LogPrint.log
sysD=$((sysD-1))
print "Final sysD $sysD">>LogPrint.log
finalTime=$timeA$sysD

我希望这对和我面临同样问题的人有用。

于 2013-04-16T03:46:15.000 回答
0
$ date '+%m/%d/%Y' --- current date


$ TZ=Etc/GMT+24 date  '+%m/%d/%Y'  -- one dayprevious date

适当使用时区

于 2015-02-19T05:36:41.473 回答
0
date -d "yesterday" '+%Y-%m-%d'
于 2020-01-19T13:21:28.487 回答
0

试试这个: gdate -d "1 天前" +"%Y/%m/%d"

于 2017-10-19T17:51:40.157 回答
-1

问题

您的论点使用反引号,而不是单引号。您也可能没有使用 GNU 日期,或支持您正在使用的标志的日期版本。

解决方案

正确引用你的论点。例如:

$ date -d '1 day ago' +'%Y/%m/%d'
2013/04/14
于 2013-04-16T02:31:14.957 回答