linux脚本计算时间间隔,计算两个日期相差多少天数的shell脚本

#!/bin/bash

#the days between your input and today!

#2012-10-07

year(){

while read -p "please input the year(must be YYYY ): " YEAR

do

if ((YEAR>=1990)) && ((YEAR<=9999));then

echo $YEAR

break

fi

done

}

month(){

while read -p "please input the month (must be MM ): " MONTH

do

MONTH_TMP=`echo ${MONTH/0/}`

if ((MONTH_TMP<=12)) && ((MONTH_TMP>=1)) && [[ `expr length $MONTH` -eq 2 ]];then

echo $MONTH

break

fi

done

}

day(){

while read -p "please input the day (must be dd ): " DAY

do

DAY_TMP=`echo ${DAY/0/}`

if ((DAY_TMP<=31)) && ((DAY_TMP>=1)) && [[ `expr length $DAY` -eq 2  ]];then

echo $DAY

break

fi

done

}

ARISE(){

while :

do

((++num))

TMP_DATE=$(date -d "$num days " +%F| sed -e 's/-//g')

if [[ $TMP_DATE -eq  $2 ]];then

break

fi

done

return $num

}

DRISE(){

while :

do

((++num))

TMP_DATE=$(date -d "$num days ago" +%F| sed -e 's/-//g')

if [[ $TMP_DATE -eq  $2 ]];then

break

fi

done

return $num

}

#判定用户输入的日期的合法性,包括(该日期是否存在,输入的格式是否正确)

while :

do

USER_YEAR=`year`

USER_MONTH=`month`

USER_DAY=`day`

USER_DATE="${USER_YEAR}${USER_MONTH}${USER_DAY}"

CUR_DATE=`date +'%F' | sed -e 's/-//g'`

exist_day=`cal $USER_MONTH $USER_YEAR | sed -n -e '7s/.*(..)$/1/p'`

if [[ $exist_day -lt ${USER_DAY/0/} ]];then

echo "this $USER_DATE is not exist!!!"

else

break

fi

done

#判断用户输入的日期与当前日期前后

if [[ $CUR_DATE -lt $USER_DATE ]];then

ARISE $CUR_DATE $USER_DATE

echo "today is $CUR_DATE ,and little than $USER_DATE  $num days"

elif [[ $CUR_DATE -gt $USER_DATE ]];then

DRISE $CUR_DATE $USER_DATE

echo "today is $CUR_DATE ,and bigger than  $USER_DATE cha  $num days"

else

echo "oh,it's today $(date +'%F')"

fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值