date[1] 命令打印或设置系统日期和时间
# 显示当前日期时间$ dateFri Jan 9 17:10:15 CST 2026
如果提供的参数以+开头,date 会以该参数定义的格式(类似于 strftime 函数的格式)打印当前日期和时间(或由 --date 选项指定的日期和时间)。格式字符串中除了以%开头的转换说明符外,其他字符会保持不变。
$ date "+%Y-%m-%d %H:%M:%S"2026-01-09 17:12:03$ date '+周末愉快,今天是%F'周末愉快,今天是2026-01-10
1. 时间转换说明符
| | |
|---|
%H | | |
%I | | |
%k | | |
%l | | |
%M | | |
%N | | |
%p | | |
%P | | |
%r | 本地环境的 12 小时制时间(如,11:11:04 PM) | |
%R | | |
%s | 自纪元(1970-01-01 00:00 UTC)以来的秒数 | |
%S | | |
%T | 24 小时制的小时、分钟、秒,等同于 %H:%M:%S | |
%X | | |
%z | 4 位数字时区(如-0600或+0530),不可确定时为-0000 | |
%:z | | |
%::z | 带冒号、精确到秒的数字时区(如-06:00:00) | |
%:::z | 带冒号、最小精度的数字时区(如-06或+05:30) | |
%Z | | |
2. 日期转换说明符
| | |
|---|
%a | | |
%A | | |
%b | | |
%B | 本地环境的完整月份名,长度可变(如January) | |
%c | 本地环境的日期和时间(如Thu Mar 3 23:05:25 2020) | |
%C | | |
%d | | |
%D | | |
%e | | |
%F | | |
%g | | |
%G | | |
%h | | |
%j | | |
%m | | |
%q | | |
%u | | |
%U | | |
%V | | |
%w | | |
%W | | |
%x | | |
%y | | |
%Y | | |
3. 字面量转换说明符
4. 填充与标志
默认行为:数字字段默认用零左填充(如月份%m输出01)。例外:纳秒(%N)右填充,纪元秒(%s)不填充。
修饰符(用于%后):
E:使用本地环境的替代日期/时间表示(适用于%c, %C, %x, %X, %y, %Y)。O:使用本地环境的替代数字符号(适用于数字说明符)。
注意:POSIX 仅对 %C、%F、%G、%Y(无修饰符时)的标志和字段宽度有明确规定。其他组合均为 GNU 扩展。
5. 实用示例
显示日期时间
date "+%Y-%m-%d %H:%M:%S"# 或date "+%F %T"2026-01-09 18:13:21
仅显示日期
date "+%Y-%m-%d"# 或date "+%F"2026-01-09
仅显示时间
date "+%H:%M:%S"# 或date "+%T"18:13:21
显示月份名称
date +"%B"# 完整月份Januarydate +"%b"# 缩写月份Jan
自定义中文格式
date +"%Y年%m月%d日 %H时%M分%S秒"2026年01月09日 17时31分56秒
参考资料
[1] date: https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html