Date & Time CLI 是一份命令行日期时间操作参考,聚焦系统 date 命令及其在脚本中的实际用法。
用途 该技能用于在命令行中获取、格式化、转换和比较日期与时间,覆盖 epoch 时间戳、时区、ISO 8601 等常见需求。当用户提到 date command、timestamp、epoch、unix timestamp 等关键词时适用。
主要能力
- 当前日期时间:date 输出系统默认格式,date +%s 输出 epoch 秒,date -u 输出 UTC 时间。
- 格式化字符串:文档列出 %Y、%m、%d、%H、%M、%S、%s、%N、%Z、%z、%A、%a、%B、%j、%u、%F 等 token 及其含义与示例。
- macOS 与 GNU 差异:macOS 使用 BSD date,Linux 使用 GNU date,两者不兼容。解析日期字符串时 GNU 用 date -d "..." +%s,macOS 用 date -j -f "%Y-%m-%d %H:%M:%S" "..." +%s。日期加减时 GNU 用 date -d "now + 3 days",macOS 用 date -v+3d;macOS 的 -v 标志中 y 年、m 月、w 周、d 日、H 小时、M 分钟、S 秒。
- Epoch 转换:epoch 秒为 10 位,毫秒为 13 位,13 位需先除以 1000。秒转可读时间 GNU 用 date -d @1681400000,macOS 用 date -r 1681400000;可读时间转 epoch 秒 GNU 用 date -d "2026-04-13T14:30:00" +%s,macOS 用 date -j -f。
- ISO 8601:GNU 用 date --iso-8601=seconds;macOS 无该标志,需手动构造,如 date -u +"%Y-%m-%dT%H:%M:%SZ" 或 date +"%Y-%m-%dT%H:%M:%S%z"。文档提示 ISO 8601 要求 -04:00 而非 -0400,GNU 可处理,macOS 需自行插入冒号。
- 时区转换:TZ="America/New_York" date 在 GNU 与 macOS 均可用;也可先取 epoch 再用 TZ 转换。可用 ls /usr/share/zoneinfo/America/ 列出时区。
- 日期比较:将两个日期转为 epoch 后比较,可计算相差天数(差值除以 86400)。
- 字符串解析:GNU date 较灵活,支持 "April 13, 2026"、"next friday"、"2 weeks ago" 等;macOS 需精确指定格式。
- 实用单行命令:计算某时间戳距今多久、查询某日期是星期几、计算两个时间戳之间的秒数、生成相对时间描述函数。
- 脚本用法:生成带时间戳的文件名(如 db-backup-$(date +%Y%m%d-%H%M%S).sql.gz)、日志时间戳函数、用 date +%s 测量耗时。
- 替代方案:当 date 不够用时,给出 Python(dateutil.parser、datetime、zoneinfo)与 Node(new Date、Date.now)示例。
使用方式 文档以命令示例为主,按任务组织,并附 Quick Reference 表格,对照 GNU 与 macOS 两种写法。用户可直接复制对应平台的命令,或按需组合进 shell 脚本。
适用场景 适用于 shell 脚本中的时间处理、日志打点、备份文件命名、跨时区时间显示与转换、epoch 时间戳互转、日期差计算等开发与运维场景。
限制 文档仅覆盖 date 命令及少量 Python、Node 替代写法,未提供安装步骤、收费信息或平台支持范围等额外事实;macOS 与 GNU 的差异需要用户自行判断当前系统。