我希望在unix / shell脚本中获取上一个日期。
我正在使用以下代码
date -d ’1 day ago’ +’%Y/%m/%d’
但是我收到以下错误。
date: illegal option -- d
就我在inetrnet上阅读而言,它基本上意味着我使用的是旧版本的GNU。任何人都可以帮助这个。
更多信息
unix> uname -a
SunOS Server 5.10 Generic_147440-19 sun4v sparc SUNW,Sun-Fire-T200
此外,以下命令会出错。
unix> date --version
date: illegal option -- version
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
答案 0 :(得分:13)
试试这个:
date --date="yesterday" +%Y/%m/%d
答案 1 :(得分:5)
你可以使用
date -d "30 days ago" +"%d/%m/%Y"
从30天前获取日期,类似地,您可以用x天数替换30
答案 2 :(得分:4)
此处建议的几种解决方案假设系统中存在GNU coreutils
。以下内容适用于Solaris:
TZ=GMT+24 date +’%Y/%m/%d’
答案 3 :(得分:4)
dtd="2015-06-19"
yesterday=$( date -d "${dtd} -1 days" +'%Y_%m_%d' )
echo $yesterday;
答案 4 :(得分:3)
使用日期命令获取1天的返回日期:
date -v -1d
它会给(当前日期-1)意味着提前1天。
date -v +1d
这将给出(当前日期+1)意味着1天后。
类似下面的代码可以代替d
使用,以找出年,月等
y-Year,
m-Month
w-Week
d-Day
H-Hour
M-Minute
S-Second
答案 5 :(得分:2)
以下脚本将上一个日期打印到targetDate
(指定日期或指定日期)
targetDate=2014-06-30
count=1
startDate=$( echo `date -d "${targetDate} -${count} days" +"%Y-%m-%d"`)
echo $startDate
答案 6 :(得分:0)
SunOS附带传统的BSD用户工具,这些工具通常缺乏预期的现代选项。看看你是否可以获得XPG插件(类似于/usr/xpg4/bin/date
)或者如果可以的话安装GNU coreutils
包。
与此同时,您可能需要编写自己的简单日期处理脚本。网上有很多例子,例如在Perl。例如。 this one:
vnix$ perl -MPOSIX=strftime -le 'print strftime("%Y%m", localtime(time-86400))'
201304
(稍微调整一下,如果你与链接后面的那个相比。)
答案 7 :(得分: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
我希望这对那些面临同样问题的人有用。
答案 8 :(得分:0)
$ date '+%m/%d/%Y' --- current date
$ TZ=Etc/GMT+24 date '+%m/%d/%Y' -- one dayprevious date
适当使用时区
答案 9 :(得分:0)
试试这个: gdate -d“1天前”+“%Y /%m /%d”
答案 10 :(得分:0)
date -d "yesterday" '+%Y-%m-%d'
答案 11 :(得分:-1)
您使用反引号而不是单引号作为参数。您也可能没有使用支持您正在使用的标志的GNU日期或 date 版本。
正确引用你的论点。例如:
$ date -d '1 day ago' +'%Y/%m/%d'
2013/04/14