Linux(Centos 7.6)命令详解:date

1.命令作用

按照指定的格式显示当前时间,或者设置系统日期(Display the current time in the given FORMAT, or set the system date.)

2.命令语法

Usage: date [OPTION]... [+FORMAT]
       or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

3.参数详解

OPTION:

  • -d, --date=STRING,将时间格式的STRING字符串,按默认输出格式输出,而非输出当前时间
  • -f, --file=DATEFILE,与-d参数类似,对DATEFILE的每行执行一次
  • -I[TIMESPEC], --iso-8601[=TIMESPEC],以ISO 8601格式输出日期/时间;TIMESPEC可取值date(默认),hours,minutes,seconds,ns,分别输出到日期、小时、分钟、秒、纳秒
  • -r, --reference=FILE,显示文件的最后修改时间
  • -R, --rfc-2822,以RFC 2822格式输出日期和时间,如: Mon, 07 Aug 2006 12:34:56 -0600
  • --rfc-3339=TIMESPEC,以RFC 3339格式输出日期和时间;TIMESPEC可取值date,seconds,ns,分别输出到日期、秒、纳秒,日期和时间组件由单个空格分隔: 2006-08-07 12:34:56-06:00
  • -s, --set=STRING,设置时间为STRING描述的时间
  • -u, --utc, --universal,打印或设置协调世界时间(UTC),UTC是全球统一的原子时标准,基于高精度原子钟计时,取代了传统的格林尼治标准时间(GMT)
  • --help,显示此帮助并退出
  • --version,输出版本信息并退出

FORMAT:

  • %%,百分号(%)
  • %a,该地的简写星期名称(如: Sun)
  • %A,该地区的完整工作日名称(如: Sunday)
  • %b,该地区的缩写月份名称(如: Jan)
  • %B,该地区的完整月份名称(如: January)
  • %c,该地区的日期和时间(如: Thu Mar  3 23:05:25 2005)
  • %C,世纪;类似于%Y,但不包含最后两位数字(如: 20)
  • %d,月内的日期(如: 01)
  • %D,日期;与%m/%d/%y相同(如: 08/01/25)
  • %e,月月内的日期,0在前时0位置留空;与 %_d 相同(如: 1)
  • %F,完整日期;与%Y-%m-%d相同
  • %g,显示年份的后两位(如: 2025显示25)
  • %G,显示年份的全部信息(如: 2025)
  • %h,该地区的缩写月份名称,与%b相同
  • %H,小时(00..23)
  • %I,小时 (01..12)
  • %j,1年中的第几天(001..366)
  • %k,小时(0..23),第一位数字0留空位;与 %_H 相同
  • %l,小时(1..12),第一位数字0留空位;与 %_I 相同
  • %m,月份(01..12)
  • %M,分钟(00..59)
  • %n,换行符
  • %N,纳秒(000000000..999999999)
  • %p,该地区表示上午或下午的对应词;若未知则留空
  • %P,类似于%p ,但小写输出
  • %r,该地区采用的12小时制时间(如: 11:11:04 PM)
  • %R,24小时制的小时和分钟;与%H:%M相同
  • %s,自UTC时间1970-01-01 00:00:00到现在的的秒数
  • %S,秒(00..60)
  • %t,一个tab制表符
  • %T,时间;与%H:%M:%S相同
  • %u,星期(1..7); 1代表星期一
  • %U,一年中的周数,以周日作为一周的起始日(00..53)
  • %V,一年中的周数,以周一作为一周的起始日(01..53)
  • %w,星期(0..6); 0代表星期日
  • %W,一年中的周数,以周一作为一周的起始日(00..53)
  • %x,本地的日期表示法(如: 12/31/99)
  • %X,本地时间的表示法(如: 23:13:48)
  • %y,年份的最后两位数字(00..99)
  • %Y,年
  • %z,输出形如+hhmm,数字时区(如: -0800)
  • %:z,输出形如+hh:mm,数字时区(如: -04:00)
  • %::z,输出形如+hh:mm:ss,数字时区(如: -04:00:00)
  • %:::z,带有:的数字时区,精确到必要的位数(如: -04, +05:30)
  • %Z,字母式时区缩写词(如: EDT/CST)

日期1号默认显示01,其中0的处理方式有如下几种方式

  • - (hyphen),直接删除0
  • _ (underscore),空格替换0
  • 0  (zero),补0(默认)
  • ^ ,如有可能,请使用大写字母
  • # ,如有可能,请使用相反的大小写形式

4.常用用例

4.1.显示指定的时间

[root@node2 ~]# date -d "2023-10-12 12:14"     # 用-d指定时间,然后以默认格式输出到屏幕
Thu Oct 12 12:14:00 CST 2023
[root@node2 ~]# 
[root@node2 ~]# cat datefile 
2012-12-12 14:42:11
2018-11-02 23:11:23
[root@node2 ~]# 
[root@node2 ~]# date -f datefile               # 类似-d,时间以文件内容方式给出
Wed Dec 12 14:42:11 CST 2012
Fri Nov  2 23:11:23 CST 2018
[root@node2 ~]# 
[root@node2 ~]# date -d "04:05:06 2021-03-05 - 5 minutes" "+%F %T"  # 计算指定时间减去5分钟后的时间,-d指定的时间格式,必须是%H:%M:%S %Y-%m-%d
2021-03-05 04:00:06
[root@node2 ~]# 

4.2.指定显示时间的格式

# ISO 8601格式输出
[root@node2 ~]# date -Idate
2025-08-01
[root@node2 ~]# date -Ihours
2025-08-01T19+0800
[root@node2 ~]# date -Iminutes
2025-08-01T19:56+0800
[root@node2 ~]# date -Iseconds
2025-08-01T19:57:06+0800
[root@node2 ~]# date -Ins
2025-08-01T19:57:13,199246767+0800
[root@node2 ~]# 

# RFC 2822格式输出
[root@node2 ~]# date -R
Fri, 01 Aug 2025 19:58:44 +0800
[root@node2 ~]# 

# RFC 3339格式输出
[root@node2 ~]# date --rfc-3339=date
2025-08-01
[root@node2 ~]# date --rfc-3339=seconds
2025-08-01 19:59:52+08:00
[root@node2 ~]# date --rfc-3339=ns
2025-08-01 19:59:57.858842535+08:00
[root@node2 ~]# 

4.3.自定义格式及输出内容

date +%D
date +%F
date +%Y-%m-%d
date "+%F %T"
date "+%F %T.%N"
date "+%Y-%m-%d %H:%M:%S"              # 中间有空格需要引号引起来(单引号也可以)
date '+%Y-%m-%d %H:%M:%S.%N'
date "+%C %Y-%m-%d %H:%M:%S.%N %A"
date -d "-3 days" "+%F %T"             # 显示当前时间减3天后的时间
date -d "04:05:06 2021-03-05 - 5 minutes" "+%s"

[root@node2 ~]# date '+%Y-%m-%d %H:%M:%S.%N'
2025-08-01 20:21:00.114991721
[root@node2 ~]# 

4.4.时间前0的处理

[root@node2 ~]# date '+%Y-%m-%d %H:%M:%S.%N'     # 默认,关注月份显示
2025-08-01 20:22:00.836179086
[root@node2 ~]# 
[root@node2 ~]# date '+%Y-%0m-%d %H:%M:%S.%N'    # 默认,关注月份显示
2025-08-01 20:22:05.220865941
[root@node2 ~]# 
[root@node2 ~]# date '+%Y-%_m-%d %H:%M:%S.%N'    # 日期前的0空格替换,关注月份显示
2025- 8-01 20:22:14.314696586
[root@node2 ~]# date '+%Y-%-m-%d %H:%M:%S.%N'    # 日期前的0删除,关注月份显示
2025-8-01 20:22:24.896310551
[root@node2 ~]# 

4.5.显示文件最后修改时间

[root@node2 ~]# date -r t1.txt      # 输出的是stat命令输出的Modify对应的值,不是Change的值
Fri Aug  1 20:01:34 CST 2025
[root@node2 ~]# stat t1.txt 
  File: ‘t1.txt’
  Size: 17        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 33811557    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-08-01 20:01:34.713444076 +0800
Modify: 2025-08-01 20:01:34.713444076 +0800
Change: 2025-08-01 20:02:03.399442678 +0800
 Birth: -
[root@node2 ~]# 

4.6.修改时间

4.6.1.临时修改,重启失效

[root@node2 ~]# date -s '2025-08-02 12:12:12'  # 服务器重启后该设置会失效
Sat Aug  2 12:12:12 CST 2025
[root@node2 ~]# date
Sat Aug  2 12:12:13 CST 2025
[root@node2 ~]# 

 4.6.2.永久修改

# 永久修改时间步骤:
timedatectl                                 # 查看当前系统时区,本地时间(CST),UTC、RTC时间
hwclock --show                              # 显示硬件时钟的精确时间,12小时制显示,与本地时间(CST)相同
hwclock --set --date "2025-08-02 12:00:00"  # 修改硬件时间
hwclock --hctosys                           # 将硬件时间同步到系统时间

4.7.UTC时间

[root@node2 ~]# date -u          # UTC时间 (全球基准时间)
Fri Aug  1 11:45:33 UTC 2025
[root@node2 ~]# date             # CST时间 = UTC时间 + 8小时 (区域性时间标准)
Fri Aug  1 19:45:37 CST 2025
[root@node2 ~]# 

4.8.秒与时间格式的转换

[root@node2 ~]# date +%s                            # 显示自(1970-01-01 UTC)以来的秒数
1754050074
[root@node2 ~]# date --date='@1754050074'           # 将自(1970-01-01 UTC)起到现在以来的秒数转换为日期
Fri Aug  1 20:07:54 CST 2025
[root@node2 ~]# date -d "2025-08-01 12:00:00" +"%s" # 将指定日期转换为自(1970-01-01 UTC)以来的秒数
1754020800
[root@node2 ~]#     

4.9.其他时间显示

TZ='America/Los_Angeles' date  # 指定时区和地区查看时间,tzselect可以查看时区
TZ='Asia/China' date
TZ='China/Beijing Time' date
date --date='TZ="America/Los_Angeles" 09:00 next Fri'   # 美国洛杉矶下周五上午9点的当地时间

4.10.时间的计算

[root@node2 ~]# date -d "04:05:06 2021-03-05 - 5 minutes" "+%F %T"  # 计算指定时间减去5分钟后的时间,-d指定的时间格式,必须是%H:%M:%S %Y-%m-%d
2021-03-05 04:00:06
[root@node2 ~]# 
[root@node2 ~]# date -d "-3 days" "+%F %T"                          # 显示当前时间减3天后的时间
2025-07-29 20:54:31
[root@node2 ~]# 
[root@node2 ~]# date -d "04:05:06 2021-03-05 - 5 minutes" "+%s"     # 计算指定时间减去5分钟后按秒显示结果
1614888006
[root@node2 ~]# 

4.11.其他相关命令

tzselect                                    # 查看可以设置为哪些时区
timedatectl                                 # 查看当前系统时区,本地时间(CST),UTC、RTC时间
timedatectl | grep "Time zone"              # 查看当前时区
timedatectl set-timezone Asia/Shanghai      # 设置为中国时区
hwclock --show                              # 显示硬件时钟的精确时间,12小时制显示,与本地时间(CST)相同
hwclock --set --date "2025-08-01 12:00:00"  # 修改硬件时间
hwclock --hctosys                           # 将硬件时间同步到系统时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆是浪个

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值