您现在的位置是:首页 > 服务器相关

日期加减

batsom2020-12-11服务器相关

简介日期加减

对日期进行加减,建议先转换成1970-01-01 UTC之后的秒数,然后再进行加减
1.转换成1970-01-01 UTC之后秒数:start_date=$(date -d'080826' +%s)
 2.进行加减:end_date=$(expr $start_date + n \* 86400)
其中,n是需要增加的天数,86400是一天的秒数
3.转换成需要的日期格式:end_date=$(date -d"1970-01-01 UTC $end_date seconds" +%y%m%d)



时间加减
如:1990-01-01 01:01:01  加上 1小时 20分
处理方法:
a.将基础时间转为时间戳
time1=$(date +%s -d '1990-01-01 01:01:01')
echo $time1
631126861 【时间戳】
b.将增加时间变成秒
[root@localhost ~]# time2=$((1*60*60+20*60))
[root@localhost ~]# echo $time2
4800
c.两个时间相加,计算出结果时间
time1=$(($time1+$time2))
time1=$(date +%Y-%m-%d\ %H:%M:%S -d "1970-01-01 UTC $time1 seconds");
echo $time1
1990-01-01 02:21:01
2。时间差计算方法
如:2010-01-01 与 2009-01-01 11:11:11 时间差
原理:同样转成时间戳,然后计算天,时,分,秒
time1=$(($(date +%s -d '2010-01-01') - $(date +%s -d '2009-01-01 11:11:11')));
echo time1
将time1 / 60 秒,就变成分了。



shell时间(字符串和时间戳转换)
在shell中,字符串转换为时间戳可以这样做:
date -d "2010-10-18 00:00:00" +%s
输出形如:
1287331200
其中,-d参数表示显示指定的字符串所表示的时间,+%s表示输出时间戳。
而时间戳转换为字符串可以这样做:
date -d @1287331200
输出形如:
Mon Oct 18 00:00:00 CST 2010
如果要转换成“2010-10-18 00:00:00”这种形式的时间戳,则这样做:
date -d "1970-01-01 UTC 1287331200 seconds" "+%F %T"
输出形如:
2010-10-18 00:00:10
再多废话一句,如果只要输出日期,不要时间,则去掉 %T 就可以了:
date -d "1970-01-01 UTC 1287331200 seconds" +%F
输出形如:
2010-10-18

年月日小时分钟
file_time=`cat /home/hadoop/readfile/datatime.txt`
time_1=$(date -d "`echo ${file_time} | sed 's/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3/'`" +%s)
next_1=`expr ${time_1} + 300`
next_time=`date -d "1970-01-01 UTC ${next_1} seconds" "+%Y%m%d%H%M"`
年月日小时分钟秒
echo ${file_time} | sed 's/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3:/'

date -d "`echo 201606210000 | sed 's/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3:/'`" +%s
date -d "1970-01-01 UTC 1466438400 seconds" "+%Y%m%d%H%M%S"


以下还有一些时间的计算方法:
 echo $(date --date='3 day')  //当天日期+3天
Fri Jan 16 11:55:02 CST 2015
 
 echo $(date --date='3 day ago')  //当天日期-3天
Sat Jan 10 11:55:10 CST 2015
 
 echo $(date --date='3 month')  //当天日期+3月
Mon Apr 13 11:55:17 CST 2015
 
 echo $(date --date='3 month ago')  //当天日期-3朋
Mon Oct 13 11:55:25 CST 2014
 
 echo $(date --date='3 year')  //当天日期+3年
Sat Jan 13 11:55:32 CST 2018
 
 echo $(date --date='3 year ago')  //当天日期-3年
Fri Jan 13 11:55:38 CST 2012

 echo $(date --date='3 minute ')  //当天日期+3秒
Tue Jan 13 11:58:44 CST 2015
 
 echo $(date --date='3 minute ago')  //当天日期-3秒
Tue Jan 13 11:52:52 CST 2015
 
 echo $(date --date='3 hour ago')  //当天日期-3小时
Tue Jan 13 08:56:00 CST 2015
 
 echo $(date --date='3 hour')  //当天日期+3小时
Tue Jan 13 14:56:06 CST 2015

 

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

随便看看

文章排行

本栏推荐

栏目更新