约 11186 字

约 56 分钟

#Bash 的 date 命令

date [OPTION]... [+FORMAT]

功能

查看或设置日期和时间。

类型

可执行文件(/usr/bin/date),属于 coreutils。

参数

  • OPTION 选项:
    • -d, --date=STRING - 查看指定的日期,而不是现在
    • --debug - 打印解析过程
    • -f, --file=DATEFILE - 使用文件 DATEFILE 指定日期,每行一次,类似 -d 选项
    • -I[FMT], --iso-8601[=FMT] - 使用 ISO 8601 格式
    • --resolution - 查看时间戳的可用分辨率
    • -R, --rfc-email - 使用 RFC 5322 格式
    • --rfc-3339=FMT - 使用 RFC 3339 格式
    • -r, --reference=FILE - 查看文件 FILE 最后被修改的时间
    • -s, --set=STRING - 将时间设为字符串 STRING 表示的时间
    • -u, --utc, --universal - 查看或设置 UTC 时间;默认为本地时间
    • --help - 显示当前帮助
    • --version - 显示版本

#格式

格式含义
%%字面值 %
%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
%e月中的第几天(空格填充),等同于 %_d
%F完整日期,类似于 %Y-%m-%d
%gISO 周的年份的最后两位数字(参见 %G)
%GISO 周的年份(参见 %V,通常与 %V 一起使用)
%h等同于 %b
%H小时(00..23)
%I小时(01..12)
%j一年中的第几天(001..366)
%k小时(空格填充,0..23),等同于 %_H
%l小时(空格填充,1..12),等同于 %_I
%m月份(01..12)
%M分钟(00..59)
%n换行符
%N纳秒(000000000..999999999)
%p本地化的 AM 或 PM(若未知则为空)
%P与 %p 相同,但为小写形式
%q一年中的季度(1..4)
%r本地化的 12 小时时间(例如:11:11:04 PM)
%R24 小时制的小时与分钟,等同于 %H:%M
%s自纪元(1970-01-01 00:00 UTC)以来的秒数(时间戳)
%S秒(00..60)
%t制表符(tab)
%T时间,等同于 %H:%M:%S
%u星期几(1..7,1 表示星期一)
%U一年中的周数(以星期日为每周第一天,00..53)
%VISO 周数(以星期一为每周第一天,01..53)
%w星期几(0..6,0 表示星期日)
%W一年中的周数(以星期一为每周第一天,00..53)
%x本地化的日期表示(例如:12/31/99)
%X本地化的时间表示(例如:23:13:48)
%y年份的最后两位数字(00..99)
%Y完整年份
%z数字形式的时区偏移 +hhmm(例如:-0400)
%:z数字形式的时区偏移 +hh:mm(例如:-04:00)
%::z数字形式的时区偏移 +hh:mm:ss(例如:-04:00:00)
%:::z数字形式的时区偏移,带必要的冒号精度(例如:-04,+05:30)

默认情况下,数值字段会使用 0 进行填充,可以在 % 后添加以下标识修改此类行为:

标识含义
-不填充
_使用空格填充
0使用 0 填充
+使用 0 填充,并在大于 4 位的年份前添加 +
^使用大写
#使用相反的大小写

#示例

查看时间

$ date
Thu Nov 13 11:33:44 AM UTC 2025
$ date +"%Y-%m-%d %H:%M:%S"             # 指定格式
2025-11-13 11:33:44
$ date -d @1763024722                   # 查看指定的时间戳
Thu Nov 13 09:05:22 AM UTC 2025
$ date -d "next Monday"                 # 查看下周一的时间
Mon Nov 17 12:00:00 AM UTC 2025
$ date -d "2025-12-25 +7 days"          # 查看 2025-12-25 的 7 天之后的日期
Thu Jan  1 12:00:00 AM UTC 2026

设置时间

$ sudo date -s "2012-12-21 08:30:00"
Fri Dec 21 08:30:00 AM UTC 2012

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2025/11/13