date 命令学习

date 命令学习

1. 命令简介

在显示方面使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记。在备份文件的时候我们常结合此命令生成当前日期和时间的文件名。格式符前面以 + 加号开头,若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

2. 语法参数

2.1 使用语法

用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

Mandatory arguments to long options are mandatory for short options too.
-d, --date=STRING         display time described by STRING, not 'now'
-f, --file=DATEFILE       like --date once for each line of DATEFILE
-I[TIMESPEC], --iso-8601[=TIMESPEC]  output date/time in ISO 8601 format.
                         TIMESPEC='date' for date only (the default),
                         'hours', 'minutes', 'seconds', or 'ns' for date
                         and time to the indicated precision.
-r, --reference=文件		显示文件指定文件的最后修改时间
-R, --rfc-2822		以RFC 2822格式输出日期和时间
				例如:2006年8月7日,星期一 12:34:56 -0600
   --rfc-3339=TIMESPEC   output date and time in RFC 3339 format.
                         TIMESPEC='date', 'seconds', or 'ns' for
                         date and time to the indicated precision.
                         Date and time components are separated by
                         a single space: 2006-08-07 12:34:56-06:00
-s, --set=STRING          set time described by STRING
-u, --utc, --universal    print or set Coordinated Universal Time (UTC)
   --help		显示此帮助信息并退出
   --version		显示版本信息并退出

2.2 说明

参数说明
-d, --date=STRING显示由STRING描述的时间,而不是“现在”,示例:date -d "-7 day" +%Y-%m-%d 显示七天前的日期
-f, --file=DATEFILE使用 -f 参数进行多行输出,示例:参考使用案例
-I[TIMESPEC]ISO 8601格式的输出日期/时间,示例:参考使用案例
-r, --reference=文件显示指定文件的最后修改时间,示例:参考使用案例
-R, --rfc-2822以RFC 2822格式输出日期和时间,示例:参考使用案例
-s, --set=STRING设置系统时间
–version显示版本编号
-u, --utc, --universal打印或设置协调世界时(UTC)
–help帮助

2.3 参数说明

使用格式:

date +[参数]
参数说明
%%输出结果为一个 % 字符
%a当前locale 的星期名缩写(例如: 日,代表星期日)
%A当前locale 的星期名全称 (如:星期日)
%b当前locale 的月名缩写 (如:一,代表一月)
%B当前locale 的月名全称 (如:一月)
%c当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d按日计的日期(例如:01)
%D按日计的日期;等于%m/%d/%y
%e按日计的日期,添加空格,等于%_d
%F完整日期格式,等价于 %Y-%m-%d
%gISO-8601 格式年份的最后两位 (参见%G)
%GISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
%h显示月份,等于%b
%H小时(00-23)
%I小时(00-12)
%j按年计的日期(001-366)
%k小时,格式为( 0…23); 和 %_H 相同
%l(小写L)小时,格式为 ( 1…12); 和 %_I(大写i) 相同
%m月 (01…12)
%M分钟 (00…59)
%n换行
%N纳秒(000000000-999999999)
%p当前locale 下的"上午"或者"下午",未知时输出为空
%P与%p 类似,但是输出小写字母
%r当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R24 小时时间的时和分,等价于 %H:%M
%s自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S秒(00-60)
%t输出制表符 Tab
%T时间,等于%H:%M:%S
%u星期,1 代表星期一
%U一年中的第几周,以周日为每星期第一天(00-53)
%VISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w一星期中的第几日(0-6),0 代表周一
%W一年中的第几周,以周一为每星期第一天(00-53)
%x当前locale 下的日期描述 (如:12/31/99)
%X当前locale 下的时间描述 (如:23:13:48)
%y年份最后两位数位 (00-99)
%Y年份
%z数字时区(例如,+0800)
%😒数字时区(例如,+08:00)
%:😒数字时区(例如,+08:00:00)
%::😒数字时区带有必要的精度 (例如,+08)
%Z按字母表排序的时区缩写 (例如,CST)

3. 使用案例

➡️ 星期名缩写 %a

[root@104 ~]# date +%a

➡️ 星期名全写 %A

[root@104 ~]# date +%A
星期二

➡️ 月名缩写 %b

[root@104 ~]# date +%b
1

➡️ 月名全称 %B

[root@104 ~]# date +%B
一月

➡️ 日期和时间 %c

[root@104 ~]# date +%c
2024年01月09日 星期二 10时14分46秒

➡️ 世纪 %C

年份除100后去整

注:date +%C 得到的结果通常为省略当前年份的后两位数字,示例:2024 年,得到的结果就是 20,但是 2024 年应该是 21 世纪,所以个人感觉这个参数没有太大的使用意义。

# 年份除100后去整
[root@104 ~]# date +%C
20

➡️ 按日计的日期 %d

[root@104 ~]# date +%d
09

➡️ 按日计的日期 %D

等于 date +%m/%d/%y

[root@104 ~]# date +%D
01/09/24

➡️ 按日计的日期 %e

添加空格,等于 %_d,将 09 中的 0 换成了空格

[root@104 ~]# date +%e
 9
[root@104 ~]# date +%_d
 9
# 和 %d 类似
[root@104 ~]# date +%d
09

➡️ 完整日期格式 %F

完整日期格式,等价于 %Y-%m-%d

[root@104 ~]# date +%F
2024-01-09

➡️ ISO-8601 格式年份的最后两位 %g

ISO-8601 格式年份的最后两位 (参见%G)

ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用

[root@104 ~]# date +%g
24
[root@104 ~]# date +%G
2024

➡️ 显示月份 %h

显示月份,等于 %b

[root@104 ~]# date +%h
1

➡️ 小时(00-23) %H

[root@104 ~]# date +%H
16

➡️ 小时(00-12) %I

[root@104 ~]# date +%I
04

➡️ 按年计的日期(001-366) %j

[root@104 ~]# date +%j
009

➡️ 小时,格式为( 0…23) %k

小时,格式为( 0…23); 和 %_H 相同

[root@104 ~]# date +%k
16
[root@104 ~]# date +%_H
16

➡️ 小时,格式为 ( 1…12) %l

小时,格式为 ( 1…12); 和 %_I(大写i) 相同

[root@104 ~]# date +%l
 4
[root@104 ~]# date +%_I
 4

➡️ 月 (01…12) %m

date +%b 类似, date +%b 显示中文(一月)或者英文(Jan),date +%m 显示数字

[root@104 ~]# date +%m
01

➡️ 分钟 (00…59) %M

[root@104 ~]# date +%M
35

➡️ 纳秒 %N

纳秒(000000000-999999999)

[root@104 ~]# date +%N
595140186

➡️ 上午或者下午 %p %P

当前locale 下的"上午"或者"下午",未知时输出为空,中文模式下大写和小写 p 输出内容相同,英文模式下大写 p 输出小写 am 或者 pm,小写 p 输出大写 AM 或者 AM

# 小写 p
[root@104 ~]# date +%p
下午
[root@104 ~]# date +%p
PM

# 大写 p
[root@104 ~]# date +%P
下午
[root@104 ~]# date +%P
pm

➡️ 显示文件最后修改时间

显示指定文件的最后修改时间

[root@localhost data]# date -r test
2024年 04月 19日 星期五 09:51:47 CST
[root@localhost data]# touch a.txt test/
[root@localhost data]# date -r test
2024年 04月 19日 星期五 09:52:09 CST
  • 扩展

使用 stat 命令:stat 命令可以显示文件属性的详细信息,比如最近一次访问和修改文件的时间、文件大小等信息,使用起来比较简单,命令后面只需要加上文件名就可以

[root@localhost data]# stat test/
  文件:"test/"
  大小:18        	块:0          IO 块:4096   目录
设备:fd00h/64768d	Inode:35280866    硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2024-04-19 10:03:49.204293669 +0800
最近更改:2024-04-19 10:04:52.295859636 +0800
最近改动:2024-04-19 10:04:52.295859636 +0800
创建时间:-

➡️ 12 小时时钟时间 %r

当前locale 下的 12 小时时钟时间 (如:下午 04时41分13秒)

# 中文格式
[root@104 ~]# date +%r
下午 04时41分13秒

# 英文格式
[root@105 ~]# date +%r
05:05:35 PM

➡️ 24 小时时间的时和分 %R

[root@104 ~]# date +%R
17:06

➡️ 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 %s

可以通过这个时间来计算两个时间段之间的差值

[root@104 ~]# date +%s
1704791232

# 计算分,时,日,年	
[root@104 ~]# echo $(($(date +%s)/60/60/24/365))
54
# 计算月
[root@104 ~]# echo $((1704791232/60/60/24/365*12))
648

# 计算时间段差值
[root@104 ~]# echo "BeginTime: "$(date +%s) && BeginTime=$(date +%s) &&  sleep 10 && echo "EndTime: "$(date +%s) && EndTime=$(date +%s) && echo "TimeDifference="$(($EndTime-$BeginTime))
BeginTime: 1704791895
EndTime: 1704791905
TimeDifference=10

➡️ 秒(00-60) %S

[root@104 ~]# date +%S
50

➡️ 时间 %T

当前时间,等于 %H:%M:%S

[root@104 ~]# date +%T
17:20:20

➡️ 星期 %u

星期,1 代表星期一

[root@104 ~]# date +%u
2

➡️ 一年中的第几周 %U

一年中的第几周,以周日为每星期第一天(00-53)

[root@104 ~]# date +%U
01

➡️ ISO-8601 格式规范下的一年中第几周 %V

ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53),在国内使用时需要使用**以周一为每星期第一天**来计算,和 date +%W 结果相同

[root@104 ~]# date +%V
02

➡️ 一星期中的第几日 %w

一星期中的第几日(0-6),0 代表周一,和 date +%u 结果相同

[root@104 ~]# date +%w
2

➡️ 一年中的第几周 %W

一年中的第几周,以周一为每星期第一天(00-53),和 date +%V 结果相同

[root@104 ~]# date +%W
02

➡️ 日期描述 %x

# 中文格式
[root@104 ~]# date +%x
2024年01月09日

# 英文格式
[root@105 ~]# date +%x
01/09/2024

➡️ 时间描述 %X

# 中文格式
[root@104 ~]# date +%X
17时31分30秒

# 英文格式
[root@105 ~]# date +%X
05:31:28 PM

➡️ 年份最后两位数位 %y

年份最后两位数位 (00-99)

[root@105 ~]# date +%y
24

➡️ 年份 %Y

[root@104 ~]# date +%Y
2024

➡️ 数字时区 %z

[root@104 ~]# date +%z
+0800
[root@104 ~]# date +%:z
+08:00
[root@104 ~]# date +%::z
+08:00:00
[root@104 ~]# date +%:::z
+08

➡️ 按字母表排序的时区缩写 %Z

[root@104 ~]# date +%Z
CST
  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值