date命令
访问量:2469

一、简介

date命令,使用来显示和设置系统时间和日期的。

二、语法

top [选项] [参数]

三、常用选项

-d <string> 展示字符串string对应的时间,string不仅仅可以为时间字符串,也可以为类似now , 2days ago ,感觉有点像php中strtotime函数的参数,等价于--date<=string>

-s <string> 设置系统时间为字符串string对应的时间,等价于--set<=string>

-s <datefile> 展示datefile文件中,每一行时间字符串对应的时间,等价于--file=DATEFILE

-r <datefile> 展示datefile文件中,最后一行时间字符串对应的时间,等价于--file=DATEFILE

四、常用参数

默认情况下,date会以下面格式输出时间:

Wed Apr 24 14:05:38 CST 2019

即:星期 月份 日期 时:分:秒 时区 年份

如果,要修改输出的时间格式,可以使用如下格式:

date +%时间格式符

常用的时间格式符

%H 小时,24小时制(00~23)
%I 小时,12小时制(01~12)
%k 小时,24小时制(0~23)
%l 小时,12小时制(1~12)
%M 分钟(00~59)
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 从1970年1月1日00:00:00到目前经历的秒数
%S 显示秒(00~59)
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012)
%d 一个月的第几天(01~31)
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366)
%m 月份(01~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99)

五、案例

1、获取时间字符串

获取3天前的,这个时间点

date -d "-3 days" "+%Y-%m-%d %H:%M:%S"

解析: -d 表示展示后面字符串对应的时间;“-3 days”表示获取三天前的时间,当然,我们也可使用类似的方法,获取未来某个时间,比如"+5 hours" 获取5个小时后的时间; "+%Y-%m-%d %H:%M:%S" 表示按照指定的格式,输出时间。

2、获取时间戳

从上面的时间格式符,我们可以看到,有"%s 从1970年1月1日00:00:00到目前经历的秒数",这正是时间戳,所以,获取时间戳的格式如下:

date +%s

比如,获取2分钟之前的时间戳

date -d "-2 minutes" "+%s"

3、时间戳和字符串相互转换

时间字符串转为时间戳,比如“2019-04-06 19:29:43”转为时间戳

date -d "2019-04-06 19:29:43" "+%s"

时间戳转为时间字符串,比如1554550183,转为时间字符串

date -d @1554550183 "+%Y-%m-%d %H:%M:%S"