文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Shell 计算明天和昨天日期的函数

Shell 计算明天和昨天日期的函数

时间:2007-09-24  来源:brain2007


baidu <iframe marginwidth="0" marginheight="0" allowtransparency="1" ;="" src="http://cpro.baidu.com/cpro/ui/uijs.php?&amp;uid=128453&amp;n=trottercpr&amp;tm=34&amp;cm=112&amp;um=36&amp;rad=1&amp;rsi0=250&amp;rsi1=250&amp;rss0=%23CC0000&amp;rss1=%23ffffff&amp;rss2=%230000ff&amp;rss3=%23000000&amp;rss4=%23666666&amp;rss5=%23ffffff&amp;wn=1&amp;hn=3&amp;rssl0=center&amp;rssl1=top&amp;rsi2=1&amp;word=http%3A%2F%2Fwww.gbunix.com%2Fhtmldata%2F2005_06%2F14%2F18%2Farticle_1215_1.html&amp;fv=9&amp;cn=1&amp;refer=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fq%3Dshel%2B%2B%25E8%25AE%25A1%25E7%25AE%2597%25E6%2598%25A8%25E5%25A4%25A9%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dorg.mozilla%3Azh-CN%3Aofficial%26client%3Dfirefox-a" frameborder="0" height="250" scrolling="no" width="250"></iframe>
#返回月份的天数
get_mon_days()
{
        Y=`expr substr $1 1 4`
        M=`expr substr $1 5 2`

        r1=`expr $Y % 4`
        r2=`expr $Y % 100`
        r3=`expr $Y % 400`

        case $M in
        01|03|05|07|08|10|12) days=31;;
        04|06|09|11) days=30;;
        esac
        if [ $M -eq 02 ]
        then
                if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
                then
                        days=29
                else
                        days=28
                fi
        fi
        echo $days
}
#返回昨天日期
get_before_date()
{
 Y=`expr substr $1 1 4`
 M=`expr substr $1 5 2`
 D=`expr substr $1 7 2`
 YY=`expr $Y - 1`
 MM=`expr $M - 1`
 DD=`expr $D - 1`
 MM=`printf "%02d" $MM`
 DD=`printf "%02d" $DD`
 dd=$Y$MM
 dad=`get_mon_days $dd`
 be_date=$Y$M$DD
 if [ $D -eq 01 ]
 then
 if [ $M -ne 01 ]
 then
 be_date=$Y$MM$dad
 fi
 if [ $M -eq 01 ]
                then
                        be_date=$YY"1231"
                fi
   fi
        echo $be_date

}
#返回明天日期
get_next_date()
{
 Y=`expr substr $1 1 4`
 M=`expr substr $1 5 2`
 D=`expr substr $1 7 2`
 YY=`expr $Y + 1`
 MM=`expr $M + 1`
 DD=`expr $D + 1`
 MM=`printf "%02d" $MM`
 DD=`printf "%02d" $DD`
 r1=`expr $Y % 4`
 r2=`expr $Y % 100`
 r3=`expr $Y % 400`

        next_date=$Y$M$DD

        if [ $D -eq 30 ]
        then
                case $M in
                04|06|09|11) next_date=$Y$MM"01";;
                esac
        fi
        if [ $D -eq 31 ]
        then
                next_date=$Y$MM"01"
                case $M in
                12) next_date=$YY"0101";;
                esac
        fi
        if [ $M -eq 02 ]
        then
                if [ r1 -eq 0 -a r2 -ne 0 -o r3 -eq 0 ]
                then
                        if [ $D -eq 29 ]
                        then
                                next_date=$Y$MM"01"
                        fi
                else
                        if [ $D -eq 28 ]
                        then
                                next_date=$Y$MM"01"
                        fi
                fi
        fi
        echo $next_date
}

本人在HP Unix下测试通过
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载