12 回答
尝试这个:
date --date="yesterday" +%Y/%m/%d
您可以使用
date -d "30 days ago" +"%d/%m/%Y"
要获取 30 天前的日期,同样您可以将 30 替换为 x 天数
dtd="2015-06-19"
yesterday=$( date -d "${dtd} -1 days" +'%Y_%m_%d' )
echo $yesterday;
为了使用 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
这里建议的几个解决方案假设GNU coreutils
系统上存在。以下应该适用于 Solaris:
TZ=GMT+24 date +’%Y/%m/%d’
以下脚本将前一个日期打印到targetDate
(指定日期或给定日期)
targetDate=2014-06-30
count=1
startDate=$( echo `date -d "${targetDate} -${count} days" +"%Y-%m-%d"`)
echo $startDate
SunOS 附带传统的 BSD 用户空间工具,这些工具通常缺乏预期的现代选项。看看您是否可以获得 XPG 附加组件(类似于/usr/xpg4/bin/date
)或安装 GNUcoreutils
软件包(如果可以)。
同时,您可能需要编写自己的简单日期处理脚本。网上有很多例子,例如 Perl。例如这个:
vnix$ perl -MPOSIX=strftime -le 'print strftime("%Y%m", localtime(time-86400))'
201304
(如果您与链接后面的内容进行比较,则稍作调整。)
我已使用以下解决方法来获得所需的解决方案。
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
我希望这对和我面临同样问题的人有用。
$ date '+%m/%d/%Y' --- current date
$ TZ=Etc/GMT+24 date '+%m/%d/%Y' -- one dayprevious date
适当使用时区
date -d "yesterday" '+%Y-%m-%d'
试试这个: gdate -d "1 天前" +"%Y/%m/%d"
问题
您的论点使用反引号,而不是单引号。您也可能没有使用 GNU 日期,或支持您正在使用的标志的日期版本。
解决方案
正确引用你的论点。例如:
$ date -d '1 day ago' +'%Y/%m/%d'
2013/04/14