我如何计算在UNIX中指定日期之前的日期?(How can I calculate the date

2019-08-06 06:03发布

我有两个变量:X和Y.

X的值将是MMDDYY格式给出的日期,我想计算该日期之前的日期,并将它在格式为yyyymmdd返回英寸

让我给你举个例子。 当X = “091509”(MMDDYY格式)Y应为“20090914”(YYYYMMDD格式)

Answer 1:

~$ date -d "20090101 -1 day"
Wed Dec 31 00:00:00 CET 2008

如果你想要检索的自定义格式的日期你刚才扔在一些格式字符串。

~$ date -d "2009-09-15 -1 day" +%Y%m%d
20090914

至于你的转换你可以使用bash的子萃取(假设你使用当然bash)的。 这也假定您的输入是一致的,“安全”。

X="091509"
Y=`date -d "${X:4:2}${X:0:2}${X:2:2} -1 day" +%Y%m%d`
echo $Y

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



Answer 2:

我喜欢的Tcl的日期计算,即使它是笨重的壳单行。 使用Tcl 8.5:

x=091509
y=$(printf 'puts [clock format [clock add [clock scan "%s" -format "%%m%%d%%y"] -1 day] -format "%%Y%%m%%d"]' "$x" | tclsh)


Answer 3:

由于-d选项不会在MacOS X或FreeBSD的存在,这里是他们的答案

检索相对于当前时间的日期

date -v -1d

特别是对于你的问题,你需要在-j-f标志使用特定的日期

date -v -1d -j -f %m%d%y 091509 +%Y%m%d


Answer 4:

日期-d“昨天”



文章来源: How can I calculate the date preceding a given date in unix?