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
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-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 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-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

相关推荐

  1. date 命令学习

    2024-07-12 17:46:03       20 阅读
  2. 每天学习一个Linux命令date

    2024-07-12 17:46:03       35 阅读
  3. linux 中date 命令的用法

    2024-07-12 17:46:03       51 阅读
  4. Linux的shell的date命令

    2024-07-12 17:46:03       18 阅读
  5. date

    2024-07-12 17:46:03       18 阅读
  6. linux的shell的date命令的加号“+“的作用

    2024-07-12 17:46:03       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 17:46:03       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 17:46:03       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 17:46:03       62 阅读
  4. Python语言-面向对象

    2024-07-12 17:46:03       72 阅读

热门阅读

  1. 解决 idea git提交后,文件状态不刷新

    2024-07-12 17:46:03       22 阅读
  2. 如何理解李彦宏说的”不要卷模型,要卷应用

    2024-07-12 17:46:03       26 阅读
  3. Vue3学习记录

    2024-07-12 17:46:03       21 阅读
  4. 浏览器Content-Range断点续传MP4文件

    2024-07-12 17:46:03       23 阅读