date 是 Linux/Unix 系统中用于查看和设置系统日期与时间的核心命令,默认输出当前系统的本地时间,支持自定义格式、转换时区等功能,日常使用频率极高。以下是其基础用法、常用格式及进阶操作:
一、基础用法(查看时间)
直接输入 date 命令,默认以系统预设格式输出当前本地时间(包含星期、年月日、时分秒、时区):
date
# 示例输出(格式:星期 月 日 时:分:秒 时区 年)
Wed Nov 5 14:30:25 CST 2025
CST 表示时区(中国标准时间,对应 UTC+8);
- 不同系统的默认格式可能略有差异,但核心信息一致。
二、自定义时间格式
通过 格式控制符 自定义输出内容(如仅显示日期、仅显示时间、指定分隔符),格式为 date +"格式字符串"(+ 是固定前缀,格式符以 % 开头)。
常用格式示例
| 命令 |
输出结果示例 |
用途说明 |
date +"%Y-%m-%d" |
2025-11-05 |
年-月-日(ISO 标准格式) |
date +"%H:%M:%S" |
14:35:40 |
24小时制 时:分:秒 |
date +"%Y-%m-%d %H:%M:%S" |
2025-11-05 14:36:15 |
完整日期+时间(常用日志) |
date +"%m/%d/%Y" |
11/05/2025 |
月/日/年(美式格式) |
date +"%A, %B %d, %Y" |
Wednesday, November 05, 2025 |
完整英文格式(星期、月份) |
date +"%s" |
1762236985 |
时间戳(自1970-01-01 00:00:00 UTC 起的秒数) |
格式符说明
| 格式符 |
含义 |
示例 |
%Y |
4位年份 |
2025 |
%m |
2位月份(01-12) |
11 |
%d |
2位日期(01-31) |
05 |
%H |
24小时制小时(00-23) |
14 |
%M |
分钟(00-59) |
38 |
%S |
秒(00-59) |
52 |
%A |
完整星期名(英文) |
Wednesday |
%B |
完整月份名(英文) |
November |
%s |
Unix 时间戳(秒) |
1762237132 |
三、进阶操作(设置/转换时间)
1. 查看其他时区的时间
默认显示本地时区(如 CST),可通过 TZ 环境变量临时查看其他时区时间(无需修改系统配置):
# 查看 UTC 时间(世界协调时间)
TZ=UTC date
# 示例输出:Wed Nov 5 06:40:18 UTC 2025(比 CST 晚8小时)
# 查看纽约时间(美国东部时间,UTC-5/UTC-4,夏令时会变化)
TZ=America/New_York date
# 示例输出:Wed Nov 5 02:41:30 EDT 2025
- 时区名称参考:
/usr/share/zoneinfo/ 目录下的文件夹名(如 Asia/Shanghai、Europe/London)。
2. 查看指定日期的时间(时间戳/字符串转换)
可将 时间戳 或 日期字符串 转换为可读格式,或计算指定日期的信息:
# 1. 时间戳转可读时间(示例:转换时间戳 1762237132)
date -d @1762237132
# 输出:Wed Nov 5 14:38:52 CST 2025
# 2. 计算“指定日期”的时间(如 2025年12月25日)
date -d "2025-12-25"
# 输出:Thu Dec 25 00:00:00 CST 2025
# 3. 计算“相对时间”(如 3天后、1小时前)
date -d "+3 days" # 3天后的当前时间
date -d "-1 hour" # 1小时前的时间
date -d "next Monday" # 下周一的当前时间
- 参数
-d(--date):用于指定“待处理的日期/时间字符串”,支持相对时间(+/- N units)和绝对时间。
3. 设置系统时间(需 root 权限)
仅当系统未同步网络时间(如 NTP)时,可手动设置时间(需 sudo 或 root 身份):
# 格式:date -s "日期时间字符串"
sudo date -s "2025-11-05 15:00:00" # 设置系统时间为 2025-11-05 15:00:00
# 单独设置日期(时间不变)
sudo date -s "2025-11-06"
# 单独设置时间(日期不变)
sudo date -s "15:30:00"
四、常见误区
- 自定义格式漏写
+:必须用 date +"%Y-%m-%d",漏写 + 会报错或输出默认格式;
- 设置时间无权限:普通用户无法修改系统时间,必须加
sudo;
- 相对时间格式错误:
date -d "+3 day"(单数 day)也有效,但推荐用复数 days,兼容性更好;
- 时间戳单位混淆:
date -d @xxx 中的 xxx 是秒级时间戳,若为毫秒级(如 1762237132123),需先除以 1000(如 date -d @$((1762237132123/1000)))。
五、常用 date 命令速查表
以下按「基础查看」「自定义格式」「时间转换」「系统设置」分类,整理了日常高频使用的 date 命令,可直接复制执行:
基础时间查看(默认格式)
| 命令 |
功能 |
示例输出 |
date |
查看当前本地时间(完整信息) |
Wed Nov 5 14:30:25 CST 2025 |
date -u |
查看 UTC 世界协调时间 |
Wed Nov 5 06:30:25 UTC 2025 |
date +"%Z" |
仅查看当前时区 |
CST |
自定义格式(高频场景)
1. 日期相关
| 命令 |
功能 |
示例输出 |
date +"%Y-%m-%d" |
年-月-日(ISO 标准,日志/脚本常用) |
2025-11-05 |
date +"%m/%d/%Y" |
月/日/年(美式格式) |
11/05/2025 |
date +"%d-%b-%Y" |
日-缩写月-年(英文缩写) |
05-Nov-2025 |
date +"%A, %B %d" |
完整星期 + 完整月份 + 日期 |
Wednesday, November 05 |
2. 时间相关
| 命令 |
功能 |
示例输出 |
date +"%H:%M:%S" |
24小时制 时:分:秒 |
14:35:40 |
date +"%I:%M:%S %p" |
12小时制 时:分:秒 + 上午/下午 |
02:35:40 PM |
date +"%s" |
生成 Unix 时间戳(秒级,接口/脚本常用) |
1762236985 |
3. 日期+时间组合
| 命令 |
功能 |
示例输出 |
date +"%Y-%m-%d %H:%M:%S" |
完整日期+24小时制时间(最常用) |
2025-11-05 14:36:15 |
date +"%Y%m%d_%H%M%S" |
无分隔符格式(用于文件名,如日志文件) |
20251105_143615 |
时间转换与计算
1. 时间戳 ↔ 可读时间
| 命令 |
功能 |
示例输出 |
date -d @1762237132 |
秒级时间戳转可读时间 |
Wed Nov 5 14:38:52 CST 2025 |
date -d @$((1762237132123/1000)) |
毫秒级时间戳转可读时间(先除1000) |
Wed Nov 5 14:38:52 CST 2025 |
date -d "2025-11-05 14:30:00" +"%s" |
可读时间转秒级时间戳 |
1762236600 |
2. 相对时间计算
| 命令 |
功能 |
示例输出 |
date -d "+1 day" |
1天后的当前时间 |
Thu Nov 6 14:30:25 CST 2025 |
date -d "-2 hours" |
2小时前的时间 |
Wed Nov 5 12:30:25 CST 2025 |
date -d "next Monday" |
下周一的当前时间 |
Mon Nov 10 14:30:25 CST 2025 |
date -d "last month +5 days" |
上个月加5天的时间 |
Tue Oct 10 14:30:25 CST 2025 |
系统时间设置(需 root 权限)
| 命令 |
功能 |
说明 |
sudo date -s "2025-11-05 15:00:00" |
同时设置日期和时间 |
需输入管理员密码 |
sudo date -s "2025-11-06" |
单独设置日期(时间不变) |
- |
sudo date -s "15:30:00" |
单独设置时间(日期不变) |
- |
sudo hwclock -w |
将系统时间同步到硬件时钟 |
避免重启后时间失效 |
跨时区查看
| 命令 |
功能 |
示例输出 |
TZ=UTC date |
查看 UTC 时间 |
Wed Nov 5 06:30:25 UTC 2025 |
TZ=America/New_York date |
查看纽约时间(美东时区) |
Wed Nov 5 02:30:25 EDT 2025 |
TZ=Europe/London date |
查看伦敦时间(西欧时区) |
Wed Nov 5 07:30:25 GMT 2025 |
TZ=Asia/Tokyo date |
查看东京时间(日本时区) |
Wed Nov 5 15:30:25 JST 2025 |
总结
date 命令的核心价值是灵活查看和控制系统时间,日常高频用法:
- 查看默认时间:
date;
- 自定义格式(日志/脚本用):
date +"%Y-%m-%d %H:%M:%S";
- 时间戳转换:
date -d @时间戳;
- 相对时间计算:
date -d "+3 days";
- 设置时间(需 root):
sudo date -s "日期时间"。
如需更多格式符或功能,可通过 man date 查看完整手册(系统内置帮助)。