如何在unix中计算给定日期之前的日期?

mus*_*123 2 unix shell scripting

我有两个变量:X和Y.

X的值将是以mmddyy格式给出的日期 ,我想计算该日期之前的日期,yyyymmdd格式返回.

让我给你举个例子.当X ="091509"(mmddyy格式)时,Y应为"20090914"(yyyymmdd格式)

Mar*_*son 5

~$ date -d "20090101 -1 day"
Wed Dec 31 00:00:00 CET 2008
Run Code Online (Sandbox Code Playgroud)

如果你想以自定义格式检索日期,你只需要输入一些格式字符串.

~$ date -d "2009-09-15 -1 day" +%Y%m%d
20090914
Run Code Online (Sandbox Code Playgroud)

至于你的转换,你可以使用bash子串提取(假设你当然使用bash).这也假设您的输入是一致的并且"安全".

X="091509"
Y=`date -d "${X:4:2}${X:0:2}${X:2:2} -1 day" +%Y%m%d`
echo $Y
Run Code Online (Sandbox Code Playgroud)

http://www.walkernews.net/2007/06/03/date-arithmetic-in-linux-shell-scripts/