对日期进行加减,建议先转换成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
随便看看
文章排行
本栏推荐
栏目更新
Copyright 2020 Inc. AllRights Reserved. Design by 日期加减