有些是以前的,有些没有判断输入合法性,有问题请指正 #计算某日前若干天的日期 #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 |
【转】几个关于日期的小函数
最新推荐文章于 2021-04-29 07:02:03 发布