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

民工哥

图片

昨日推荐:每天学一个 Linux 命令(49):free

命令简介

date 命令用于显示与设置系统时间。

语法格式

date [OPTION] [MMDDhhmm[[CC]YY][.ss]]

选项说明

-d<字符串>  #显示字符串所指的日期与时间。字符串前后必须加上双引号
-s<字符串>  #根据字符串来设置日期与时间。字符串前后必须加上双引号
-u  #显示GMT
--help     #打印在线帮助信息
--version  #打印版本信息

时间字符串列表

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

应用举例

格式化输出当前时间信息

[root@centos7 ~]# date +"%Y-%m-%d"
2021-01-17

打印昨天(1天前)日期

[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

时间的加减

#当前时间
[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

设置时间

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" 

时间的转换

[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

每天学一个 Linux 命令(47):df

每天学一个 Linux 命令(48):top

在本公众号后台回复 学命令 可以查看往期文章去系统学习Linux系统命令。

阅读 1.1k

民工哥技术之路
公众号:民工哥技术之路、《Linux系统运维指南 从入门到企业实战》作者。专注系统架构、高可用、高性能...

10多年IT职场老司机的经验分享,坚持自学一路从技术小白成长为互联网企业信息技术部门的负责人。

20.1k 声望
3.6k 粉丝
0 条评论
你知道吗?

10多年IT职场老司机的经验分享,坚持自学一路从技术小白成长为互联网企业信息技术部门的负责人。

20.1k 声望
3.6k 粉丝
宣传栏