mikadonic-获得前几天系统日期适用linux和aix

#!/usr/bin/ksh
#################config#######################################
DATE=`date +%Y%m%d`
BEFORE=10
##############################################################
month=`echo $DATE|cut -c 5-6`
day=`echo $DATE|cut -c 7-8`
year=`echo $DATE|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 - $BEFORE`

# 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

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

posted @ 2018-04-11 14:18  mikadonic  阅读(208)  评论(0编辑  收藏  举报