Linux man date

date - 打印或则设置系统日期与时间。

版本

$ date --version
date (GNU coreutils) 8.22

语法

date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

描述

使用指定 FORMAT 显示当前时间,或则设置系统时间。

通常,date 使用 TZ 环境变量指定的时区,如未设置 TZ 环境变量,则使用系统默认时区。关于 TZ 环境变量,详见参考链接

OPTION

-d, --date=STRING
  显示由 STRING 描述的日期和时间,而不是当前日期和时间。
  STRING 可以是很常见的格式,例如:
  - date -d '2020-02-01 09 am'
  - date -d '2020-02-01'
  - date -d '2004-02-27 14:19:13.489392193 +0530'

-f, --file=DATEFILE
  与 -d 选项一样,解析 DATEFILE 中的每一行,并显示结果日期和时间。
  如果 DATEFILE 是 '-',则从标准输入读取。
  在处理大批量日期数据时,使用 -f 选项是非常合适的,因为多次调用 date 命令,可能会导致系统开销变得很大。

-I[TIMESPEC], --iso-8601[=TIMESPEC]
  使用 ISO 8601 格式显示日期。
  使用 TIMESPEC 指定需要包含时间的哪些部分。可选值如下:
  - auto:仅打印日期(默认值)。
  - hours:打印日期,同时也输出小时。
  - minutes:打印日期,同时也输出小时,分钟。
  - seconds:打印日期,同时也输出小时,分钟,秒。
  - ns:打印日期,小时,分钟,秒。

-r, --reference=FILE
  打印 FILE 的最后修改日期和时间。

-R, --rfc-2822
  使用 [Internet RFC 2822][2] 格式显示日期。

--rfc-3339=TIMESPEC
  使用 [Internet RFC 3339][3] 指定的 TIMESPEC 格式显示日期。
  TIMESPEC 可选值如下:
  - date:仅打印完整日期,例如:2005-09-14 等价于格式 %Y-%m-%d。
  - seconds:打印完整日期和完整时间,使用空格分隔。例如:2005-09-14 00:56:06+05:30(+05:30 是时区)。
  - ns:同 seconds 格式一样,并输出纳秒。例如:2005-09-14 00:56:06.998458565+05:30。

-s, --set=STRING
  将日期和时间设置为 STRING。关于 STRING 格式,参见 -d 选项。

-u, --utc, --universal
  打印格林威治时间。UTC 时间通常也叫格林威治时间。

FORMAT

%%
  字面量 %

%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

%g
  ISO 周编号的年份的后两位数字

%G
  ISO 周编号的年份;通常,跟 %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
  相当于英语语言环境下的 am 或 pm;如果未知则空白

%r
  当前语言环境的 12 小时制时间(例如:11:11:04 PM)

%R
  24小时制的小时和分钟;等同于 %H:%M

%s
  自 1970-01-01 00:00:00 UTC 以来的秒数(就是时间戳)
  
%S
  秒数(00..60)

%t
  制表符

%T
  时间;等同于 %H:%M:%S

%u
  一周中的第几天(1..7);1 代表星期一

%U
  一年中的第几周,星期日作为一周中的第一天(00..53)

%V
  ISO 周编号,星期一作为一周中的第一天(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)

%Z
  字母时区缩写(例如:EDT)

示例

# 打印当前时间的时间戳
$ date +%s
1583252677

# 打印指定日期是一年中的第几周
$ date -d '2015-04-20' +%W
16

参考资料

添加评论

验证码: