unix&linux截取时间脚本

        本人在工作中Unix环境想要截取2天前的日期,无奈Unix没有date -d命令,无法截取时间,只能按时区截取yesterday的日期,经和同事沟通有了新的思路,抽时间整理一个脚本,主要用来Unix中历史日期抽取(linux 有date -d,不太需要此脚本)

 

具体脚本内容如下,测试环境linux HP-UX 


#!/bin/bash
###############################################################################
###Description: This shell cut one month to tow month date.                                                        ###
###Author         : ren.C.A.P.                                                                                                            ###
###Version    : V1.02                                                                                                                      ###
###Date       : 2020/4/1                                                                                                                   ###
###############################################################################
date_year=`date +%Y|awk '{print $0}'`
date_month=`date +%m |awk '{printf("%02d\n", $0)}'`
date_day=`date +%d |awk '{printf("%02d\n", $0-2)}'` ##更改参数

date_month_new=`date +%m |awk '{printf("%02d\n", $0-1)}'`
date_year_new=`date +%Y|awk '{printf("%02d\n", $0-1)}'`
  
##判断日期是否大于0
if [ $date_day -gt 0 ];then
##正常获取日期
 get_date_year=$date_year
 get_date_month=$date_month
 get_date_day=$date_day
else
##已经跨月,判断月份,31天月份
 if [ $date_month -eq 2 ]||[ $date_month -eq 4 ]||[  $date_month -eq 6 ]||[  $date_month -eq 8 ]||[  $date_month -eq 9 ]||[  $date_month -eq 11 ]||[  $date_month -eq 1 ];then
 ##判断1月,需要跨年
  if [ $date_month  -eq 1 ];then
   get_date_year=$date_year_new
   get_date_month=12
   get_date_day=`expr 31 + $date_day` 
  else
  ##否则年份正常输出,月份减一,输出31天月份日期,日期 上月天数减date_day。
    get_date_year=$date_year
    get_date_month=$date_month_new
    get_date_day=`expr 31 + $date_day`
  fi
  ##否则输出30天月份日期
 elif [ $date_month -eq 5 ]||[ $date_month -eq 7 ]||[  $date_month -eq 10 ]||[  $date_month -eq 12 ];then
    get_date_year=$date_year
    get_date_month=$date_month_new
    get_date_day=`expr 30 + $date_day`
 else
##否则为date_month=3月需要判断润平
  ##如果date_year是闰年
   if [  $[$date_year%4] -eq 0 -a $[$date_year%100] -ne 0 ]||[ $[$date_year%400] -eq 0 ];then
    get_date_year=$date_year
    get_date_month=$date_month_new
    get_date_day=`expr 29 + $date_day`
   else
    get_date_year=$date_year
    get_date_month=$date_month_new
    get_date_day=`expr 28 + $date_day`     
   fi  
 fi
fi

get_date=$get_date_year$get_date_month$get_date_day


echo $get_date


 

 

------end


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值