date 能做什么
date 是时间相关操作的总入口:按格式输出当前时间、把时间字符串解析成时间戳、把时间戳还原成可读时间、计算相对日期与设置文件时间。写脚本时用它生成带时间戳的文件名、切分日志时间段或用当前时间做标识,都非常高频。
基本信息
| 适用平台 | Linux 全发行版(coreutils) |
|---|---|
| 格式化输出 | date +%F_%H%M%S |
| 解析时间 | date -d '2026-10-12' +%s |
| 还原时间戳 | date -d @1699999999 |
| 相对日期 | date -d 'yesterday' 与 '+7 days' |
典型使用场景
- 脚本生成带时间戳的备份文件名
- 把日志或报表时间转换为时间戳做比对
- 计算昨天、下周这类相对日期
- 修改文件时间戳用于测试与数据构造
- 核对不同主机的当前时间是否一致
典型用法
典型用法
date +%F_%H%M%S # 常用命名格式,如 2026-10-13_091500
date +'%F %T %Z %z' # 输出日期时间与时区信息
date -d 'yesterday' +%F # 昨天的日期
date -d '+7 days' +%F # 七天后的日期
date -d '2026-10-12' +%s # 时间字符串转时间戳
date -d @1699999999 # 时间戳还原为可读时间
touch -d '2026-10-01 08:00:00' file.txt # 指定文件时间戳常用格式符
| 格式符 | 含义 | 注意点 |
|---|---|---|
| %F | 日期,等价 %Y-%m-%d | 脚本里最常用 |
| %T | 时间,等价 %H:%M:%S | 与 %F 搭配 |
| %Y 与 %m | 年与月 | %m 是月 |
| %M | 分钟 | 容易与月份混淆 |
| %s | Unix 时间戳 | 用于计算与比对 |
| %z | 时区偏移 | 跨时区排查时使用 |
脚本实践建议
- 文件名统一使用固定格式的时间戳
- 时间计算前先确认授时同步正常
- 跨主机比对时间时带上时区信息
- 需要精确到毫秒时使用纳秒字段
- 避免用改系统时间的方式做测试
集群内做时间计算前先确认各节点时间同步正常,否则日志比对与任务触发都会错位;格式化输出时带上时区信息便于跨主机核对。
常用格式组合
- 文件名:年月日加时分秒
- 日志检索:日期加时间范围
- 报表统计:按月或按天聚合
- 跨主机比对:加上时区偏移输出