实战
date # 当前时间(系统格式)
# Fri May 9 10:23:45 UTC 2026
date -u # UTC
date +%Y-%m-%d # 2026-05-09
date +%F # 同上简写
date +%T # 10:23:45
date +'%Y-%m-%d %H:%M:%S' # 2026-05-09 10:23:45
date +%s # Unix 时间戳
常用格式符
| 符号 |
含义 |
%Y |
4 位年(2026) |
%m |
月(01-12) |
%d |
日(01-31) |
%H |
24 小时制时 |
%M |
分 |
%S |
秒 |
%F |
%Y-%m-%d 简写 |
%T |
%H:%M:%S 简写 |
%s |
Unix 时间戳 |
%j |
一年里第几天 |
%A %a |
星期全称 / 缩写 |
%B %b |
月全称 / 缩写 |
%Z |
时区 |
时间计算
date -d "1 day ago"
date -d "1 week ago"
date -d "2 hours ago"
date -d "tomorrow"
date -d "next monday"
date -d "2026-12-31 + 7 days"
# 配格式
date -d "1 day ago" +%F
# 2026-05-08
时间戳互转
# 从时间戳转
date -d "@1747000000"
date -d "@$(date +%s)"
# 从字符串转时间戳
date -d "2026-05-09 10:23:45" +%s
设系统时间
sudo date -s "2026-05-09 10:00:00"
# 更现代的做法:用 NTP 同步
sudo timedatectl set-ntp true
timedatectl # 看时间同步状态
看 / 改时区
timedatectl # 综合
ls /etc/localtime # 软链到时区文件
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-timezone UTC
# 看支持的时区
timedatectl list-timezones | grep Asia
实战
# 生成带日期的备份文件名
backup_file="db-$(date +%F-%H%M).sql"
# 一小时内的日志(cron 调度后看)
date -d "1 hour ago" +%Y-%m-%dT%H:%M
# 看几个时区的当前时间
TZ=UTC date
TZ=America/New_York date
坑
- macOS 的
date -d 语法不同(用 -v)—— 跨平台脚本要小心
- 服务器默认时区可能是 UTC——日志时间和你本地不一致很常见
%s 时间戳无时区——所有人都用同一个