|
程序名 jg
运行 jg N
N=当前日期N天前日期
jg 3 表示3天前的日期
###############
jiange=$1
dayd=`date +%d`
yyyy=`date +%Y` #Year yyyy
mm=`date +%m` #Month mm
lm=$mm
tempj=$jiange
#处理天数
if [ $jiange -ge $dayd ]
then
jiange=`expr $jiange - $dayd `
lm=`expr $lm - 1 `
if [ $lm -eq 0 ]
then
lm=12 ##1月份的上月是去年12月份
yyyy=`expr $yyyy - 1 ` ##去年的年份
fi
case $lm in
1|3|5|7|8|10|12) ddtemp=31 ;;
4|6|9|11) ddtemp=30 ;;
2) #计算闰月
if [ ` expr $yyyy % 4 ` -eq 0 -a `expr $yyyy % 100 ` -ne 0 -o `\
expr $yyyy % 400 ` -eq 0 ]; then
ddtemp=29
else
ddtemp=28
fi
esac
while [ $jiange -ge $ddtemp ]
do
jiange=`expr $jiange - $ddtemp `
lm=`expr $lm - 1 `
if [ $lm -eq 0 ]
then
lm=12 ##1月份的上月是去年12月份
yyyy=`expr $yyyy - 1 ` ##去年的年份
fi
case $lm in
1|3|5|7|8|10|12) ddtemp=31 ;;
4|6|9|11) ddtemp=30 ;;
2) #计算闰月
if [ ` expr $yyyy % 4 ` -eq 0 -a `expr $yyyy % 100 ` -ne 0 -o `\
expr $yyyy % 400 ` -eq 0 ]; then
ddtemp=29
else
ddtemp=28
fi
esac
#一直减到年月为正确年月
done
if [ $jiange -lt $ddtemp ]
then
#daydd=$ddtemp
daydd=`expr $ddtemp - $jiange`
break
fi
if [ $jiange = 0 ]
then
daydd=$ddtemp
fi
else
daydd=`expr $dayd - $jiange `
#daydd=`expr $dayd - $tempj `
fi
if [ $lm -lt 10 ]; then ##1-9月的处理,月份需要2位,
lm=0$lm
fi
if [ $daydd -lt 10 ]; then ##1-9日的处理,日期需要两位
daydd=0$daydd
fi
filenamedate=$yyyy-$lm-$daydd |
|