zoukankan      html  css  js  c++  java
  • AIX 计算时间差shell

    #!/bin/bash
    #取年份2008
    YEAR1=$(echo $1|cut -d- -f1) 
    #取年份2010
    YEAR2=$(echo $2|cut -d- -f1)
    DAYNUM=
    
    YEARDAY () {
    #判断闰年
    #标准如果能被400整除那么为闰年
    #如果能被4整除且不能被100整除那么是闰年
    if [ $# -ne 1 ];then
        echo "Usage: $0 year"
        exit 1;
    fi
    FYEAR="$1"
    
    if [ `expr ${FYEAR} % 400` -eq 0 ];then
        FRUN="366"
    else
        if [ `expr ${FYEAR} % 4` -eq 0 ];then
            if [ `expr ${FYEAR} % 100` -eq 0 ];then
                FRUN="365"
            else
                FRUN="366"
            fi
        else
            FRUN="365"
        fi
    fi
    
    echo "$FRUN"
    
    exit 0;
    }
    #定义DOY函数
    DOY () {
    #MD表示
    MD=0
    #天数累计
    MDTOTAL=0
    #计算$1的天数
    
    YEAR=$(echo $1|cut -d- -f1)
    MONTH=$(echo $1|cut -d- -f2)
    DAY=$(echo $1|cut -d- -f3)
    #处理月份转为为天数
    #这里的MONTH=05
    i=$(( MONTH - 1 ))
    #until 循环直到条件为真就停止
    until [ $i = 0 ]
    do
    case $i in
    1|3|5|7|8|10|12 ) MD=31
    ;;
    4|6|9|11 ) MD=30
    ;;
    2 ) if [ $(YEARDAY $YEAR) = 366 ]
            then MD=29
            else MD=28
            fi
    ;;
    esac
    (( MDTOTAL += MD ))
    (( i = i- 1 ))
    done
    echo $(( MDTOTAL + DAY ))
    }
    #以上已经计算出了月份+天数
    #此时的YEAR2=2011 YEAR1=2009
    
    TOTAL2 () {
    TEMP=0
    i=$(( YEAR2 - YEAR1 - 1 ))
    until [ $i = 0 ]
    do
    #TEMP等于YEAR1+i的年份是366天还是365天
    #TEMP = $(YEARDAY $((YEAR1+i))) +$TEMP
    #那么2009年是365天,2010年是365天
    #比如 YEAR1=2008 YEAR2=2011
    #那么此时temp就是2009(365)+2010(365)
    (( TEMP += $(YEARDAY $((YEAR1+i))) ))
    (( i = i - 1 ))
    done
    echo $TEMP
    }
    
    if [ $YEAR1 = $YEAR2 ]
    #$2的天数减去$1的天数
    then DAYNUM=$(($(DOY $2)-$(DOY $1)))
    #TOTAL1 $1年份的天数(366或者365)-$1年份的天数
    else TOTAL1=$(($(YEARDAY $YEAR1)-$(DOY $1)))
    #TOTAL3 $2年的天数
         TOTAL3=$(DOY $2)
    #TOTAL2表示$2-$1相差年数转换为天数
    DAYNUM=$(( TOTAL1 + $(TOTAL2) + TOTAL3 ))
    fi
    echo $DAYNUM

  • 相关阅读:
    OCP-1Z0-051-V9.02-26题
    谨慎使用A2W等字符转换宏
    MySQL 递归查询 当前节点及子节点
    std count_if用法
    OCP-1Z0-053-V12.02-660题
    OCP-1Z0-053-V12.02-667题
    OCP-1Z0-053-V12.02-676题
    OCP-1Z0-051-V9.02-159题
    手工不完全恢复(非归档模式下,日志被覆盖)
    手工完全恢复(非归档模式下,日志没有被覆盖)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352119.html
Copyright © 2011-2022 走看看