date 命令
语法
date [OPTION]... [+FORMAT]
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
可选参数
-u 或 --utc 或 --universal :以 UTC(世界协调时间)显示时间,而不是本地时间。
# date -u
Thu Sep 12 02:03:25 UTC 2024
# date
Thu Sep 12 10:03:31 CST 2024
-d 或 --date="STRING"
显示指定日期和时间,允许你以人类可读的方式输入时间或日期。你可以指定过去或未来的时间,也可以对时间进行运算。
# date -d "next Monday"
Mon Sep 16 00:00:00 CST 2024
# date -d "2024-09-15"
Sun Sep 15 00:00:00 CST 2024
# date -d "3 days ago"
Mon Sep 9 10:07:21 CST 2024
-s 或 --set="STRING" :手动设置系统时间。需要 sudo 权限。
示例:将系统时间设置为 2024 年 9 月 12 日 10:30
# date -s "2024-09-12 10:30:00"
Thu Sep 12 10:30:00 CST 2024
# date
Thu Sep 12 10:30:02 CST 2024
--rfc-2822 :按照 RFC 2822 标准显示日期和时间(常见于邮件头)。
[root@kjt ~]# date --rfc-2822
Thu, 12 Sep 2024 10:31:11 +0800
--rfc-3339=timespec(date seconds ns)
按照 RFC 3339 标准显示日期和时间。timespec 可以是 date、seconds 或 ns。
[root@kjt ~]# date --rfc-3339=date
2024-09-12
[root@kjt ~]# date --rfc-3339=seconds
2024-09-12 10:33:03+08:00
[root@kjt ~]# date --rfc-3339=ns
2024-09-12 10:33:10.304126674+08:00
-f 或 --file=FILE
从指定文件中读取日期字符串,并对其进行转换和输出。
[root@kjt ~]# echo "2024-09-12" > dates.txt
[root@kjt ~]# date -f dates.txt
Thu Sep 12 00:00:00 CST 2024
格式化符号总结
格式符号 解释 示例输出
%Y 四位数年份 2024
%y 两位数年份 24
%m 月份(01-12) 09
%d 天(01-31) 12
%H 小时(24 小时制) 10
%M 分钟(00-59) 35
%S 秒(00-59) 15
%T 时间(等同于 %H:%M:%S) 10:35:15
%A 星期几的全称 Tuesday
%a 星期几的缩写 Tue
%B 月份的全称 September
%b 月份的缩写 Sep
%Z 时区 UTC
%s Unix 时间戳(自1970年) 1694518435
[root@kjt ~]# date +"%Y-%m-%d %H:%M:%S"
2024-09-12 11:42:13
日期的加减
date +%Y%m%d # 显示年月日
date -d "+1 day" +%Y%m%d # 显示后一天的日期
date -d "-1 day" +%Y%m%d # 显示前一天的日期
date -d "-1 month" +%Y%m%d # 显示上一月的日期
date -d "+1 month" +%Y%m%d # 显示下一月的日期
date -d "-1 year" +%Y%m%d # 显示前一年的日期
date -d "+1 year" +%Y%m%d # 显示下一年的日期
[root@kjt ~]# date -d "+1 day" +%Y%m%d
20240913
[root@kjt ~]# date -d "+1 day" +%Y-%m-%d
2024-09-13
[root@kjt ~]# date -d "-11 day" +%Y-%m-%d
2024-09-01
日期的设定
date -s # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01 # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" # 这样可以设置全部时间
date -s "01:01:01 20120523" # 这样可以设置全部时间
date -s "2012-05-23 01:01:01" # 这样可以设置全部时间
date -s "20120523 01:01:01" # 这样可以设置全部时间