【Shell】脚本日期问题

脚本完成输入一个日期,输出日期前一天和后一天日期

# get the date of next day
#!/bin/bash

function nextday
{
    read -p "input a correct day(YYYY mm dd): " year month day

        today=$year$month$day
        if [ ${#year} -eq 0 -a ${#month} -eq 0 -a ${#day} -eq 0 ];then
                echo "the next day is : " `date -d "+1day" +"%Y %m %d"`
                exit
        elif [ ${#year} -ne 4 -o ${#month} -ne 2 -o ${#day} -ne 2 ];then
                echo "Error: date format error"
                exit
        elif [ "$today" != "$(date -d $today +%Y%m%d 2>/dev/null)" ];then
                echo "Error: no such date"
                exit
        fi

    month=`expr $month + 0`

    next_year=`expr $year + 0`
    next_month=`expr $month + 0`
    next_day=`expr $day + 1`

        case $month in
            1|3|5|7|8|10|12) max_day=31;;
            4|6|9|11)        max_day=30;;
            2)               max_day=28
               [ `expr $year % 4`    -eq 0 ] && max_day=29
               [ `expr $year % 100`  -eq 0 ] && max_day=28
               [ `expr $year % 400` -eq 0 ] && max_day=29
            ;;
        esac

    if [ $day -eq $max_day ]
    then
        next_month=`expr $month + 1`
                next_day=1
        [ $next_month -eq 13 ] &&  next_year=`expr $year + 1` && next_month=1 && next_day=1
    fi

    [ $next_month -lt 10 ] && next_month="0$next_month"
    [ $next_day   -lt 10 ] && next_day="0$next_day"

        tomorrow="$next_year $next_month $next_day"

        echo "the next day is :"$tomorrow 


    last_year=`expr $year + 0`
    last_month=`expr $month + 0`
    last_day=`expr $day - 1`
    if [ $day -eq 1 ]
    then
       last_month=`expr $month - 1`
                    last_day=$max_day
       [ $last_month -eq 0 ] && last_year=`expr $year - 1` && last_month=12 && last_day=$max_day
    fi

    [ $last_month -lt 10 ] && last_month="0$last_month"
    [ $last_day   -lt 10 ] && last_day="0$last_day"

        yesterday="$last_year $last_month $last_day"

        echo "the last day is :"$yesterday 
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值