昨日推荐:每天学一个 Linux 命令(49):free
命令简介
date 命令用于显示与设置系统时间。
语法格式
代码语言:javascript复制date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
选项说明
代码语言:javascript复制-d<字符串> #显示字符串所指的日期与时间。字符串前后必须加上双引号
-s<字符串> #根据字符串来设置日期与时间。字符串前后必须加上双引号
-u #显示GMT
--help #打印在线帮助信息
--version #打印版本信息
时间字符串列表
代码语言:javascript复制FORMAT controls the output. Interpreted sequences are:
%% #字符%
%H #小时,24小时制(表示方式:00~23)
%I #小时,12小时制(表示方式:01~12)
%k #小时,24小时制(表示方式:0~23)
%l #小时,12小时制(表示方式:1~12)
%M #分(00~59)
%p #显示出上午或下午
%r #时间,12小时制
%s #从1970年1月1日0点到目前经历的秒数
%S #秒(00~59)
%T #时间(24小时制)(hh:mm:ss)
%X #显示时间的格式(%H时%M分%S秒)
%Z #按字母表排序的时区缩写
%a #星期名缩写
%A #星期名全称
%b #月名缩写
%B #月名全称
%c #日期和时间
%d #按月计的日期(01~31)
%D #日期(mm/dd/yy)
%h #和%b选项相同
%j #一年的第几天(001~366)
%m #月份(01~12)
%w #一个星期的第几天(0代表星期天)
%W #一年的第几个星期(00~53,星期一为第一天)
%x #显示日期的格式(mm/dd/yy)
%y #年份的最后两个数字(1999则是99)
%Y #年份(比如1970、1996等)
%C #世纪,通常为省略当前年份的后两位数字
%U #一年中的第几周,以周日为每星期第一天
%e #按月计的日期,添加空格,等于%_d
应用举例
格式化输出当前时间信息
代码语言:javascript复制[root@centos7 ~]# date "%Y-%m-%d"
2021-01-17
打印昨天(1天前)日期
代码语言:javascript复制[root@centos7 ~]# date -d "1 day ago"
Sat Jan 16 07:31:22 EST 2021
[root@centos7 ~]# date -d "1 day ago" "%Y-%m-%d"
2021-01-16
时间的加减
代码语言:javascript复制#当前时间
[root@centos7 ~]# date "%Y-%m-%d %H:%M:%S"
2021-01-17 07:38:17
#下一天(明天)的时间
[root@centos7 ~]# date -d " 1 day" "%Y-%m-%d %H:%M:%S"
2021-01-18 07:38:50
#前一天(昨天)的时间
[root@centos7 ~]# date -d "-1 day" "%Y-%m-%d %H:%M:%S"
2021-01-16 07:38:56
#后一个月(下个月)的时间
[root@centos7 ~]# date -d " 1 month" "%Y-%m-%d %H:%M:%S"
2021-02-17 07:39:21
#前一个月(上个月)的时间
[root@centos7 ~]# date -d "-1 month" "%Y-%m-%d %H:%M:%S"
2020-12-17 07:39:35
#后一周的时间
[root@centos7 ~]# date -d " 1 week" "%Y-%m-%d %H:%M:%S"
2021-01-24 07:39:52
#前一前的时间
[root@centos7 ~]# date -d "-1 week" "%Y-%m-%d %H:%M:%S"
2021-01-10 07:39:59
#下一年(明年)的时间
[root@centos7 ~]# date -d " 1 year" "%Y-%m-%d %H:%M:%S"
2022-01-17 07:40:11
#前一年(去年)的时间
[root@centos7 ~]# date -d "-1 year" "%Y-%m-%d %H:%M:%S"
2020-01-17 07:40:19
设置时间
代码语言:javascript复制date -s #设置当前时间,只有root权限才能设置
date -s 20201111 #设置成20201111,这样会把具体时间设置成空00:00:00
date -s 00:00:00 #设置具体时间,日期不会被更改
#设置全部时间
date -s "00:00:00 2020-11-11"
date -s "01:01:01 20201111"
date -s "2020-11-11 00:00:00"
date -s "20201111 00:00:00"
时间的转换
代码语言:javascript复制[root@centos7 ~]# date -d "2021-01-01 1234567890 seconds" "%Y-%m-%d %H:%m:%S"
2060-02-14 23:02:30
[root@centos7 ~]# date -d "2021-01-01" "%Y-%m-%d %H:%m:%S"
2021-01-01 00:01:00
[root@centos7 ~]# date -d "2021-01-01 7890 seconds" "%Y-%m-%d %H:%m:%S"
2021-01-01 02:01:30