LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 970|回复: 1

取得当前日期前N天的日期的脚本

[复制链接]
发表于 2004-1-2 17:33:41 | 显示全部楼层 |阅读模式
程序名 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
发表于 2004-1-2 18:25:13 | 显示全部楼层
date -d "+$N days ago" +%Y-%m-%d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表