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 # 将硬件时间同步到系统时间

3528

被折叠的 条评论
为什么被折叠?



