unix shell取5个月前的时间

因为hp-unix 服务器上,date 命令还不够完善,没有 -d 选项,在做取多少时间之前的时间显得特不灵活。

现有需求需要取的5个月之前的时间,实现代码如下:

#!/bin/sh
curY=`date +%Y`
curM=`date +%m`

i=5  #5个月
countdays=0 #5个月总天数
while [ $i -gt 0 ]    #循环5次
do
  temp=`echo "$curM-$i"|bc`
  tempM=$temp
  tempY=$curY
  if [ $temp -lt 0 ] ||  [ $temp -eq 0 ];then           #如果月份少于0或等于0则加12,年份减1
     tempM=`echo "$temp+12"|bc`
     tempY=`echo "$curY-1"|bc`
  fi
   monday=`cal $tempM $tempY|xargs|awk '{print $NF}'`   #得到一个月的天数(关键语句,*_^)
   countdays=`echo $countdays+$monday|bc`               #累计5个月的天数
  i=`echo "$i-1"|bc`
done
echo "总天数:"$countdays

seconds=86400*$countdays
mydate=`perl -e "print sprintf '%04d%02d%02d%02d%02d%02d',(localtime(time()-$seconds))[5]+1900,(localtime(time()-$seconds))[4]+1,(localtime(time()-$seconds))[3],(localtime(time()-$seconds))[2],(localtime(time()-$seconds))[1],(localtime(time()-$seconds))[0]"`
echo $mydate


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值