shell中date命令的一些常用操作

打印当前的日期时间

date
复制代码

2019年 11月 29日 星期五 21:28:01 CST

格式化时间

date '+%Y-%m-%d %H:%M:%S'
复制代码

2019-11-29 21:28:01

打印时间偏差后的时间

5天前

date -d '-5 day'
复制代码

date -d '-5 days'
复制代码

2019年 11月 24日 星期日 21:54:45 CST

5天后

date -d '+5 day'
复制代码

date -d '+5 days'
复制代码

2019年 12月 04日 星期三 21:55:28 CST

如果要格式化,同样在后面加'+%Y-%m-%d %H:%M:%S'

date -d '+5 days' '+%Y-%m-%d %H:%M:%S'
复制代码

2019-12-04 21:55:28

时间单位同样可用其他的:
5年前

date -d '-5 year'
复制代码
date -d '-5 years'
复制代码

5月前

date -d '-5 mon'
复制代码
date -d '-5 month'
复制代码
date -d '-5 mons'
复制代码
date -d '-5 months'
复制代码

5星期前

date -d '-5 week'
复制代码
date -d '-5 weeks'
复制代码

5小时前

date -d '-5 hour'
复制代码
date -d '-5 hours'
复制代码

5分钟前

date -d '-5 min'
复制代码
date -d '-5 mins'
复制代码
date -d '-5 minute'
复制代码
date -d '-5 minutes'
复制代码

5分钟前

date -d '-5 sec'
复制代码
date -d '-5 secs'
复制代码
date -d '-5 second'
复制代码
date -d '-5 seconds'
复制代码

打印时间戳

当前的时间戳

date +%s
复制代码

1575035158

求指定时间的时间戳

date -d "2019-11-29 21:38:56" +%s
复制代码

1575034736

求指定偏差的时间戳

date -d "`date -d '-5 year' '+%Y-%m-%d %H:%M:%S'`" +%s
复制代码

1417269619

时间戳也可以直接使用数值减的方式,比如5天前

let a=(`date +%s` - 86400*5)
echo $a
复制代码

1574604826

时间戳转时间

date -d @1574604826
复制代码

Sun Nov 24 22:13:46 CST 2019

date -d @1574604826 '+%Y-%m-%d %H:%M:%S'
复制代码

2019-11-24 22:13:46