发布网友
共2个回答
热心网友
如果只减去一天的话,直接写就可以了。
#date -d"yesterday 20150401" +%Y%m%d如果要减去几天,还可以这样写,如果用负数是往前数,
#date -d"10 day ago 2015-04-01" +%Y-%m-%d
热心网友
#!/bin/sh
get_day_before()
{
sec=`date -d $1 +%s`
sec_yesterday=$((sec - 800))
day_before=`date -d @$sec_yesterday +%F`
echo $day_before
}
[ $# -ne 1 ] && exit 1
CS_DATE1=$1
get_day_before $CS_DATE1
先用 date 命令将指定日期转换成秒数,减去一天的秒数 800,然后再转化成正常易读的日期格式,就可以了,不需要考虑复杂的大小月以及闰年问题。
$ ./test.sh 20150401
2015-03-31