✸ ✸ ✸
date 命令基础
Linux 的 date 命令是日期时间处理的瑞士军刀。它不仅能显示当前时间,还能做日期计算、格式化输出,是 shell 脚本中最常用的命令之一。
格式化输出
核心语法:date +FORMAT,用 + 号后跟格式字符串:
# 常用格式
date +%Y-%m-%d # 2025-03-02 (年-月-日)
date +%Y%m%d # 20250302 (紧凑格式,常用于文件名)
date +%H:%M:%S # 14:30:25 (时:分:秒)
date +%Y-%m-%d_%H%M%S # 2025-03-02_143025 (时间戳文件名)
date +%s # 1740912625 (Unix 时间戳,秒)
date +%N # 纳秒
date +%A # Monday (星期几英文)
date +%u # 1 (星期几数字,1=周一)
date +%j # 061 (一年中的第几天)
格式符速查表
| 格式符 | 含义 | 示例 |
|---|---|---|
%Y | 四位年份 | 2025 |
%y | 两位年份 | 25 |
%m | 月份(01-12) | 03 |
%d | 日(01-31) | 02 |
%H | 小时(00-23) | 14 |
%M | 分钟(00-59) | 30 |
%S | 秒(00-59) | 25 |
%s | Unix时间戳 | 1740912625 |
%A | 星期(英文全称) | Monday |
%a | 星期(英文缩写) | Mon |
%F | 等同 %Y-%m-%d | 2025-03-02 |
%T | 等同 %H:%M:%S | 14:30:25 |
日期计算(--date 参数)
--date(简写 -d)是 date 命令最强大的功能,支持自然语言式的日期偏移:
# 过去的日期
date +%Y%m%d -d "-1 day" # 昨天: 20250301
date +%Y%m%d -d "-7 day" # 7天前
date +%Y%m%d -d "-1 month" # 上个月的今天
date +%Y%m%d -d "-1 year" # 去年的今天
date +%Y%m%d -d "last monday" # 上周一
# 未来的日期
date +%Y%m%d -d "+1 day" # 明天
date +%Y%m%d -d "+3 month" # 3个月后
date +%Y%m%d -d "next friday" # 下周五
# 指定日期再偏移
date +%Y%m%d -d "2025-01-31 +1 month" # 从指定日期偏移
date +%A -d "2025-12-25" # 查某天是星期几
实战场景
场景1:日志文件按日期归档
#!/bin/bash
# 将昨天的日志移到归档目录
YESTERDAY=$(date +%Y%m%d -d "-1 day")
mv /var/log/app/app.log /var/log/app/archive/app_${YESTERDAY}.log
gzip /var/log/app/archive/app_${YESTERDAY}.log
场景2:备份脚本带时间戳
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mysqldump -uroot -p'pass' mydb > /backup/mydb_${TIMESTAMP}.sql
echo "Backup done: mydb_${TIMESTAMP}.sql"
场景3:计算脚本执行耗时
#!/bin/bash
START=$(date +%s)
# ... 你的业务逻辑 ...
sleep 3
END=$(date +%s)
COST=$((END - START))
echo "耗时: ${COST} 秒"
场景4:生成最近7天的日期列表
for i in $(seq 0 6); do
date +%Y-%m-%d -d "-${i} day"
done
# 输出:
# 2025-03-02
# 2025-03-01
# 2025-02-28
# ...
macOS 的区别
macOS 用的是 BSD 版 date,语法不同:
# Linux (GNU date)
date +%Y%m%d -d "-1 day"
# macOS (BSD date)
date -v-1d +%Y%m%d
如果需要跨平台兼容,建议在 macOS 上安装 GNU coreutils:brew install coreutils,然后用 gdate 命令。
总结
date 命令的核心就两件事:+FORMAT 控制输出格式,-d 做日期偏移计算。掌握这两个参数,日常脚本中的日期处理基本都能搞定。
✸ ✸ ✸
📜 版权声明
本文作者:王梓 | 原文链接:https://www.bthlt.com/note/1772451-Linuxlinux日期格式化
出处:葫芦的运维日志 | 转载请注明出处并保留原文链接


📜 留言板
留言提交后需管理员审核通过才会显示