date 命令学习

date 命令学习在显示方面使用者可以设定欲显示的格式 格式设定为一个加号后接数个标记

大家好,欢迎来到IT知识分享网。

文章目录

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-)
%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-)

[root@104 ~]# date +%N  

➡️ 上午或者下午 %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: 硬链接:2 权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 最近访问:2024-04-19 10:03:49. +0800 最近更改:2024-04-19 10:04:52. +0800 最近改动:2024-04-19 10:04:52. +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  # 计算分,时,日,年  [root@104 ~]# echo $(($(date +%s)/60/60/24/365)) 54 # 计算月 [root@104 ~]# echo $((/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:  EndTime:  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 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118076.html

(0)
上一篇 2025-11-15 22:45
下一篇 2025-11-16 07:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信