date 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于日志与时间命令族(见日志、时间与计划任务命令族)。看时间、算时间、格式化时间,都找它。
date 显示(或 root 设置)系统日期和时间。配合 +格式 能输出任意样式,还能用 -d 做时间运算——远比"看个时钟"强大。
一、基本用法与格式化
bash
date # Thu Aug 28 14:03:22 CST 2026
date "+%Y-%m-%d %H:%M:%S" # 2026-08-28 14:03:22
date "+%F %T" # 同上简写:2026-08-28 14:03:22
date "+%s" # Unix 时间戳(秒):1767000000
+后面跟格式符:%Y年、%m月、%d日、%H时(24)、%M分、%S秒、%F=%Y-%m-%d、%T=%H:%M:%S、%s是时间戳。日志文件名、备份戳常用date +%Y%m%d。
二、时间运算:-d
bash
date -d "yesterday" "+%F" # 昨天日期
date -d "3 days ago" "+%F" # 三天前
date -d "next monday" "+%F" # 下周一
date -d "2026-01-01 +100 days" "+%F" # 某日期加 100 天
-d(date)让 date 不算"现在"而算你给的描述,支持自然语言(yesterday、next monday)和偏移(+100 days),做定时任务、算过期日很方便。
三、时间戳互转
bash
date -d @1767000000 "+%F %T" # 秒戳 → 可读时间
date -d "2026-08-28 14:00:00" +%s # 可读时间 → 秒戳
@秒数把时间戳转回可读;反向用date -d "时间" +%s。脚本里时间比较常转成秒戳再比大小。
四、设置时间(需 root)
bash
sudo date -s "2026-08-28 14:30:00" # 设置系统时间
# 生产机一般用 NTP(chrony/ntpd)自动同步,手动设易出错改时间需 root(
-sset)。但生产环境应交给 NTP 自动同步,手动改容易让证书、日志、cron 出问题。看时间用 date,改时间交给timedatectl/NTP。
相关命令
定时触发用 crontab;任务日志查 journalctl。
一句话总结
date = 显示/设置系统时间:+%Y-%m-%d %H:%M:%S 格式化、+%s 取时间戳;-d 做时间运算(yesterday/+100 days);@秒戳 与时间互转;设时间需 sudo date -s(生产交给 NTP 自动同步,别手动改)。日志/备份戳常用 date +%Y%m%d。