命令与包管理65 条

date 时间命令

时间相关操作的总入口:格式化输出、解析时间戳、计算相对日期;写脚本做时间戳命名与日志切片时高频使用。

信创系统运维速查系统更新于 2026-10-13

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分钟容易与月份混淆
%sUnix 时间戳用于计算与比对
%z时区偏移跨时区排查时使用

脚本实践建议

  • 文件名统一使用固定格式的时间戳
  • 时间计算前先确认授时同步正常
  • 跨主机比对时间时带上时区信息
  • 需要精确到毫秒时使用纳秒字段
  • 避免用改系统时间的方式做测试
集群内做时间计算前先确认各节点时间同步正常,否则日志比对与任务触发都会错位;格式化输出时带上时区信息便于跨主机核对。

常用格式组合

  • 文件名:年月日加时分秒
  • 日志检索:日期加时间范围
  • 报表统计:按月或按天聚合
  • 跨主机比对:加上时区偏移输出

易错点

  • 格式符大小写混淆:%m 是月份,%M 是分钟,写反后输出看似正常却含义错误
  • 手动修改系统时间:会影响授时服务与依赖时间的应用,测试应改用修改文件时间戳等方式
  • 跨主机比对时间不带时区:节点时区不同时结论会错,输出时加上时区字段
  • 用日期字符串参与数值计算:应先转成时间戳再运算,直接相减得不到天数差
  • 脚本里到处写死时间格式:格式应集中定义,多处不一致会造成解析失败与文件名混乱

数据来源与参考

  • GNU coreutils date 手册
  • Shell 脚本实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌