Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474941
  • 博文数量: 132
  • 博客积分: 2995
  • 博客等级: 少校
  • 技术积分: 1412
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-06 20:14
文章分类

全部博文(132)

文章存档

2010年(2)

2008年(21)

2007年(109)

我的朋友

分类:

2007-11-05 15:17:34

#计算某日前若干天的日期
#date=YYYYMMDD
#Usage:command date days
str=$1
days=$2
yy=`echo $str|cut -c 1-4`
mm=`echo $str|cut -c 5-6`
dd=`echo $str|cut -c 7-8`
sav_dd=$days
days=`expr $days - $dd`
while [ $days -ge 0 ]
do
        mm=`expr $mm - 1`
        [ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
        aaa=`cal $mm $yy`
        bbb=`echo $aaa|awk '{print $NF}'`
        days=`expr $days - $bbb`
done
dd=`expr 0 - $days`
expr $dd : "^.$" > /dev/null && dd=0$dd
expr $mm : "^.$" > /dev/null && mm=0$mm
echo $yy$mm$dd


#计算某日后若干天日期
#date=YYYYMMDD
#Usage:command date days
str=$1
days=$2
yy=`echo $str|cut -c 1-4`
mm=`echo $str|cut -c 5-6`
dd=`echo $str|cut -c 7-8`
days=`expr $days + $dd`
while [ $days -gt 0 ]
do
        aaa=`cal $mm $yy`
        bbb=`echo $aaa|awk '{print $NF}'`
        sav_dd=$days
        sav_mm=$mm
        sav_yy=$yy
        days=`expr $days - $bbb`
        mm=`expr $mm + 1`
        [ $mm -gt 12 ] && mm=1 && yy=`expr $yy + 1`
done
expr $sav_dd : "^.$" > /dev/null && sav_dd=0$sav_dd
expr $sav_mm : "^.$" > /dev/null && sav_mm=0$sav_mm
echo $yy$sav_mm$sav_dd
~                 
感觉上面两个挺实用的

#计算前一天日期
aaa=`echo $TZ|sed 's/.*\(..\)/\1/'`
aaa=`expr $aaa + 24`
eval aaa=`echo $TZ|sed 's/..$/+$aaa/'`
TZ=$aaa
export TZ
yy=`date +%y`
mm=`date +%m`
dd=`date +%d`
echo $mm$dd$yy

可以调用上面的函数推导出.

#取上月末日期
get_lastday_of_lastmonth()
{
yy=`date +%Y`
mm=`date +%m-1|bc`
[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`
aaa=`cal $mm $yy`
dd=`echo $aaa|awk '{print $NF}'`
echo $yy$mm$dd
}
~     

#计算两个日期间有多少天
#date1,date2:yyyymmdd
#Usage:command date1 date2
str=$1
yy1=`echo $str|cut -c 1-4`
mm1=`echo $str|cut -c 5-6`
dd1=`echo $str|cut -c 7-8`
str=$2
yy2=`echo $str|cut -c 1-4`
mm2=`echo $str|cut -c 5-6`
dd2=`echo $str|cut -c 7-8`
count_day=`expr $dd2 - $dd1`
while [ $yy2 -ne $yy1 -o $mm2 -ne $mm1 ]
do
        mm2=`expr $mm2 - 1`
        [ $mm2 -eq 0 ] && mm2=12 && yy2=`expr $yy2 - 1`
        aaa=`cal $mm2 $yy2`
        bbb=`echo $aaa|awk '{print $NF}'`
        count_day=`expr $count_day + $bbb`
done
echo $count_day
阅读(980) | 评论(1) | 转发(0) |
0

上一篇:查看表中数据大小

下一篇:千万别执行

给主人留下些什么吧!~~

lzz1556072008-03-25 15:01:23

#取上月末日期 export lizz=`date +%d` echo `date -d -"$lizz"day +%Y%m%d`