当然可以,下面是 date
命令的最全详解(Linux 日期与时间管理命令),包含格式化输出、时间修改、时区操作、时间戳转换等内容。
🕒 Linux date
命令详解(转)
一、命令简介
date
是 Linux 中用于 显示或设置系统日期与时间 的命令。
它是系统时间管理中最常用的工具之一,可以输出当前时间、修改时间格式、转换时间戳,甚至校正系统时钟。
二、命令语法
date [OPTION] [+FORMAT]
或修改系统时间的用法:
date [MMDDhhmm[[CC]YY][.ss]]
三、常用功能与选项
选项 | 功能说明 |
---|---|
date | 显示当前系统时间 |
date '+FORMAT' | 按指定格式输出日期时间 |
date -s STRING | 设置系统日期和时间 |
date -d STRING | 显示指定时间(模拟) |
date -u | 显示 UTC(世界标准时间) |
date +%s | 显示时间戳(1970-01-01 至今的秒数) |
date -r FILE | 显示文件最后修改时间 |
date --date='...' | 与 -d 相同,指定计算时间偏移 |
date --set='...' | 同 -s ,设置系统时间 |
date --utc | 使用 UTC 时间显示 |
四、时间格式化参数(+FORMAT
)
date
的强大之处在于它的格式化能力。
格式符 | 含义 | 示例 |
---|---|---|
%Y | 年(4 位) | 2025 |
%y | 年(2 位) | 25 |
%m | 月(两位) | 10 |
%d | 日(两位) | 14 |
%H | 小时(00–23) | 09 |
%I | 小时(01–12) | 09 |
%M | 分钟 | 30 |
%S | 秒 | 59 |
%a | 星期(简写) | Tue |
%A | 星期(全写) | Tuesday |
%b | 月份(简写) | Oct |
%B | 月份(全写) | October |
%c | 本地日期与时间 | Tue Oct 14 09:30:00 2025 |
%j | 一年中的第几天 | 287 |
%u | 一周中的第几天(1=周一) | 2 |
%w | 一周中的第几天(0=周日) | 2 |
%Z | 时区缩写 | CST |
%z | 时区偏移 | +0800 |
%s | 时间戳 | 1739500000 |
组合使用即可灵活输出各种格式。
五、常用实例
1️⃣ 显示当前时间
date
# 输出:Tue Oct 14 09:30:12 CST 2025
2️⃣ 格式化输出时间
date "+%Y-%m-%d %H:%M:%S"
# 输出:2025-10-14 09:30:12
或:
date "+%A, %B %d, %Y"
# 输出:Tuesday, October 14, 2025
3️⃣ 获取时间戳
date +%s
# 输出:1739473800
4️⃣ 将时间戳转为日期
date -d @1739473800 "+%Y-%m-%d %H:%M:%S"
# 输出:2025-10-14 09:30:00
5️⃣ 显示昨天、明天的时间
date -d "yesterday"
date -d "tomorrow"
或指定偏移量:
date -d "-1 day"
date -d "+2 weeks"
date -d "next monday"
6️⃣ 设置系统时间(需要 root 权限)
sudo date -s "2025-10-14 09:35:00"
7️⃣ 输出 UTC 时间
date -u
# 输出:Tue Oct 14 01:35:00 UTC 2025
8️⃣ 显示文件的修改时间
date -r /etc/passwd
# 输出:Tue Oct 14 09:15:00 CST 2025
9️⃣ 获取一年中的第几天
date +%j
# 输出:287
🔟 输出 ISO 8601 标准时间
date --iso-8601=seconds
# 输出:2025-10-14T09:35:00+08:00
六、配合 Shell 的实用技巧
1️⃣ 日志命名
tar czf backup-$(date +%Y%m%d).tar.gz /data
# 生成 backup-20251014.tar.gz
2️⃣ 定时任务脚本里记录日志时间
echo "Job started at $(date '+%Y-%m-%d %H:%M:%S')" >> /var/log/job.log
3️⃣ 时间计算
date -d "1 hour ago"
date -d "next Friday"
4️⃣ 格式化为毫秒时间戳
date +%s%3N
# 输出:1739473800123
七、修改系统时间与硬件时间
修改系统时间
sudo date -s "2025-10-14 10:00:00"
同步硬件时钟
sudo hwclock -w
查看硬件时钟
sudo hwclock -r
八、时区操作
查看当前时区
timedatectl
切换时区
sudo timedatectl set-timezone Asia/Shanghai
查看所有可用时区
timedatectl list-timezones
九、总结
功能 | 命令示例 |
---|---|
当前时间 | date |
格式化时间 | date "+%Y-%m-%d %H:%M:%S" |
时间戳 | date +%s |
时间戳转日期 | date -d @时间戳 |
昨天 / 明天 | date -d "yesterday" / date -d "tomorrow" |
UTC 时间 | date -u |
修改时间 | sudo date -s "2025-10-14 10:00:00" |
查看时区 | timedatectl |
设置时区 | timedatectl set-timezone Asia/Shanghai |
下面是 Linux date
命令的最详细用法讲解(转自多篇官方与社区资料整合版),适合初学者与运维开发人员深入理解。
🕒 一、date
命令简介
date
是 Linux 系统中用于显示或设置系统日期与时间的命令。
它既能以各种格式输出当前时间,也能进行日期计算(如前一天、后一小时等)。
命令格式如下:
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal]
date [MMDDhhmm[[CC]YY][.ss]]
🧭 二、显示当前时间
最简单的用法:
date
输出示例:
Tue Oct 14 08:15:27 CST 2025
🧩 三、常用时间格式控制(+FORMAT
)
使用 +
开头的参数可自定义输出格式。
🔹 常见格式符
格式符 | 含义 | 示例 |
---|---|---|
%Y | 年(四位) | 2025 |
%y | 年(两位) | 25 |
%m | 月(01-12) | 10 |
%d | 日(01-31) | 14 |
%H | 小时(00-23) | 08 |
%I | 小时(01-12) | 08 |
%M | 分钟(00-59) | 30 |
%S | 秒(00-59) | 45 |
%a | 星期缩写(Sun…Sat) | Tue |
%A | 星期全称 | Tuesday |
%Z | 时区 | CST |
%s | 时间戳(自1970-01-01起的秒数) | 1760301327 |
🧮 四、格式化输出示例
# 输出标准日期
date "+%Y-%m-%d"
# 输出完整时间
date "+%Y-%m-%d %H:%M:%S"
# 输出时间戳
date +%s
# 将时间戳转成人类可读时间
date -d @1760301327
🕰️ 五、日期计算
-d
参数可以对日期进行加减计算,非常实用。
# 昨天
date -d "yesterday"
# 明天
date -d "tomorrow"
# 7天前
date -d "-7 day"
# 3个月后
date -d "+3 month"
# 显示下周一
date -d "next Monday"
# 自定义输出格式
date -d "2025-10-14 +5 day" "+%Y-%m-%d"
🧷 六、设置系统时间(root权限)
sudo date -s "2025-10-14 08:30:00"
⚠️ 注意:修改系统时间需管理员权限,容器或虚拟机中可能被禁止。
同步硬件时间:
sudo hwclock --systohc
🌎 七、UTC 与本地时区
# 使用UTC时间输出
date -u
# 查看当前时区
timedatectl
🔄 八、与脚本结合的实用技巧
1️⃣ 日志命名
tar -czf backup_$(date +%Y%m%d_%H%M%S).tar.gz /data
2️⃣ 定时任务日志
echo "$(date '+%F %T') backup complete" >> /var/log/backup.log
3️⃣ 时间差计算
start=$(date +%s)
# ...执行任务...
end=$(date +%s)
echo "Time elapsed: $((end - start)) seconds"
🧠 九、进阶时间格式例子
说明 | 命令 | 输出示例 |
---|---|---|
ISO 8601 标准格式 | date --iso-8601=seconds | 2025-10-14T08:30:00+08:00 |
RFC 2822 邮件格式 | date --rfc-email | Tue, 14 Oct 2025 08:30:00 +0800 |
Unix时间戳转为时间 | date -d @1600000000 | Sun Sep 13 12:26:40 CST 2020 |
本地化时间显示 | LC_TIME=fr_FR.UTF-8 date | mar. 14 oct. 2025 08:30:00 CST |
🧰 十、总结
功能 | 示例 |
---|---|
查看当前时间 | date |
自定义格式 | date "+%Y-%m-%d %H:%M:%S" |
时间戳 ↔ 日期转换 | date +%s / date -d @<timestamp> |
日期加减计算 | date -d "+3 days" |
设置系统时间 | sudo date -s "2025-10-14 08:30:00" |
显示UTC时间 | date -u |
发表回复