linux时间处理

linux中经常会对时间进行处理,下面介绍一下不同情况下的时间处理方式:

##1天之前(正负数字代表加减的天数)

 v_few_day_ago=`date -d "-1days" +%Y%m%d`

v_few_day_ago=`date -d "1 days ago" +%Y%m%d`
v_few_day_ago=$(date +"%Y-%m-%d" --date '-1days')

###去年同期

 v_lastyear_date=`date -d "-1 years  -1 days " +"%Y-%m-%d"`
v_lastyear_date=`date -d "1 year ago 1 day ago" +"%Y-%m-%d"`

##1个月之前

v_months_ago=`date -d "-1 months" +"%Y-%m-%d"`
v_months_ago=$(date +"%Y-%m-%d" --date '1month ago')


======根据指定时间进行推算===========

#今天日期

start_date=`date  +"%Y-%m-%d"`
##一个月前
v_few_months_ago=`date -d "$start_date 1 month ago" +"%Y-%m-%d"`
##本月1号
v_monthfirst_date=`date -d"$start_date" +"%Y-%m-"`"01"
##一年前的月初
v_lastyear_date=`date +"%Y-%m-" -d "$start_date -1 years"`"01"
##今年年初
v_yearfirst_date=`echo $start_date|cut -c1-4`"-01-01"
##上一年初

 v_lastyearfirst_date=`date -d"$start_date -1 years" +"%Y" `"-01-01"


使用实例:        

#################################################################################
#get_date_timekey 20240101073000-20240102073000算为一天
#################################################################################
timekey=20240102073000
day_id=${timekey:0:8}
hour_id=${timekey:8:6}

if [ $hour_id -lt "073000" ]
then
  date_timekey=`date -d "1 day ago ${day_id}" +%Y%m%d`
else
  date_timekey=$day_id
fi
echo $date_timekey


#################################################################################
#get_shift_timekey 第一天7:30到第二天7:30分为两个周期
#################################################################################
timekey='20240101073000'
day_id=${timekey:0:8}
hour_id=${timekey:8:6}
date_time="${timekey:0:4}-${timekey:4:2}-${timekey:6:2} ${timekey:8:2}:${timekey:10:2}"

if [ $hour_id -ge "073000" -a $hour_id -lt "193000" ]
then
  shift_timekey=${day_id}" 073000"
elif [ $hour_id -ge "193000" ]
then
  shift_timekey=${day_id}" 193000"
else
  date_2_second=$(date -d "${date_time}" +%s)
  date_2_second1=$[ date_2_second - 86400 ]
  shift_timekey=`date -d @${date_2_second1} +"%Y%m%d"`" 193000"
fi
echo $shift_timekey


#################################################################################
#get_hour_timekey 每个小时半点到下个小时半点为一个周期
#################################################################################
timekey=20240101000000 
date_time="${timekey:0:4}-${timekey:4:2}-${timekey:6:2} ${timekey:8:2}:${timekey:10:2}"

v_date_second=$(date -d "${date_time}" +%s) 
v_date_half_hour_ago=$[ v_date_second - 1800 ]
v_hour_timekey=`date -d @${v_date_half_hour_ago} +"%Y%m%d%H"`30
 
echo $v_hour_timekey

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值