#!/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