加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

aix平台计算日期的前N天和后N天shell脚本

发布时间:2020-12-15 07:15:35 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/ksh################################################################aix平台下日期加减##$1 源日期 格式:yyyyMMdd##$2 时间间隔 小于2

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读