清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#!/usr/bin/ksh
##############################################################
##aix平台下日期加减
##$1 源日期 格式:yyyyMMdd
##$2 时间间隔 小于28的自然数
##############################################################
DateAfter(){
##############################################################
if [ ! -n "$1" ];then
echo "Please input date(yyyyMMdd)!"
exit 0
fi
if [ ! -n "$2" ];then
echo "Please input Interval!"
exit 0
fi
##############################################################
param1len=`expr length $1`
if [ $param1len -ne 8 ];then
echo "Date Format IS WRONG,e.g yyyyMMdd"
exit 0
fi
##############################################################
if [ -n "$1" a -n "$2" ]; then
month=`echo $1|cut -c 5-6`
day=`echo $1|cut -c 7-8`
year=`echo $1|cut -c 1-4`
# Add 0 to month. This is a
# trick to make month an unpadded integer.
month=`expr $month + 0`
# Subtract one from the current day.
day=`expr $day + $2`
# If the day is 0 then determine the last
# day of the previous month.
if [ $day -eq 0 ]; then
# Find the preivous month.
month=`expr $month - 1`
# If the month is 0 then it is Dec 31 of
# the previous year.
if [ $month -eq 0 ]; then
month=12
day1=31
year=`expr $year - 1`
# If the month is not zero we need to find
# the last day of the month.
else
case $month in
1|3|5|7|8|10|12) day1=31;;
4|6|9|11) day1=30;;
2)
if [ `expr $year % 4` -eq 0 a `expr $year % 100` % -ne 0 o `expr $year % 400` -eq 0 ]; then
day1=29
else
day1=28
fi
;;
esac
day=`expr $day1 + $day`
fi
fi
if [ $day -lt 0 ]; then
# Find the preivous month.
month=`expr $month - 1`
# If the month is 0 then it is Dec 31 of
# the previous year.
if [ $month -eq 0 ]; then
month=12
day=`expr 31 + $day`
year=`expr $year - 1`
# If the month is not zero we need to find
# the last day of the month.
else
case $month in
1|3|5|7|8|10|12) day1=31;;
4|6|9|11) day1=30;;
2)
if [ `expr $year % 4` -eq 0 a `expr $year % 100` % -ne 0 o `expr $year % 400` -eq 0 ]; then
day1=29
else
day1=28
fi
;;
esac
day=`expr $day1 + $day`
fi
fi
echo "${#day}------------------------------"
echo "${#month}-----------------------------"
daylen=`expr length $day`
monthlen=`expr length $month`
if [ $daylen -lt 2 ];then
day=0$day
fi
if [ $monthlen -lt 2 ];then
month=0$month
fi
echo $year$month$day
else
date2=`date +20%y%m%d`
echo "$date2"
fi
}
d=`DateAfter $1 $2`
cat<<BOF
#########################################
#INPUT DATE --> $1 #
#INTERVAL --> $2 #
#RESULT DATE -->$d #
#########################################
BOF