每天学一个 Linux 命令(50):date

2021-03-15 16:38:10 浏览数 (1)

昨日推荐:每天学一个 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

0 人点赞