Biff 是一把命令行日期时间瑞士军刀

2026-05-28 1 阅读 burntsushi
Biff 用于日期时间算术、解析、格式化等的命令行工具。根据 MIT 或 UNLICENSE 获得双重许可。文档 用户指南应该是您了解 Biff 处理的高级概念的第一站。否则,请参阅 biff --help 或 biff --help 了解更具体的详细信息。或者,对其他类似工具进行比较,可以让您快速了解 Biff 是什么样的。简要示例 打印当前时间: $ biff Sat, May 10, 2025, 8:02:04 AM EDT 提示 如果您得到类似 2025 M05 10, Mon 08:02:04 的输出,那是因为您可能没有配置区域设置支持。这需要设置 BIFF_LOCALE 并使用 GitHub 发布二进制文件或在启用区域设置功能的情况下构建 Biff。以您选择的格式打印当前时间: $ biff time fmt -f rfc3339 now 2025-05-10T08:08:30.101066734-04:00 $ biff time fmt -f rfc9557 now 2025-05-10T08:08:33.420946447-04:00[America/New_York] $ biff time fmt -f ' %Y-%m-%d %H:%M:%S %Z ' now 2025-05-10 08:08:48 EDT 在一个命令中打印多个相对时间: $ biff time fmt -f ' %c ' 现在 -1d ' 下周六 ' ' 上周一 ' ' 上周一晚上 9 点 ' 2025 年 5 月 10 日星期六,美国东部时间上午 10:44:39 2025 年 5 月 9 日星期五,美国东部时间上午 10:44:39 2025 年 5 月 17 日星期六,美国东部时间上午 10:44:39 2025 年 5 月 5 日,上午 10:44:39 美国东部时间 2025 年 5 月 5 日星期一,美国东部时间晚上 9:00:00 打印另一个时区的当前时间,并将其四舍五入到最近的 15 分钟增量: $ biff time in Asia/Bangkok now | biff time round -i 15 -s 分钟 2025-05-10T19:15:00+07:00[Asia/Bangkok] 在当前时间上添加持续时间: $ biff time add -1w now 2025-05-03T10:34:30.819577918-04:00[America/New_York] $ biff time add ' 1 周 12 小时前 ' 现在 2025-05-02T22:34:44.114109514-04:00[America/New_York] $ biff 时间现在添加 6 个月 2025-11-10T10:34:49.023321635-05:00[America/New_York] 查找持续时间从过去的某个日期开始,并将其四舍五入到所需的精度: $ biff span 自 2025-01-20T12:00 2636h 1m 21s 324ms 691μs 216ns $ biff span 自 2025-01-20T12:00 -l 年 3mo 20d 21h 1m 25s 171ms 886μs 534ns $ biff跨度自2025-01-20T12:00以来biff 跨度 round -l 年 -s day 3mo 18d $ biff 跨度自 2025-01-20T12:00 | biff span round -l day -s day 110d 在日志文件中查找时间戳并将其重新格式化为本地时间: $ head -n3 /tmp/access.log 2025-04-30T05:25:14Z INFO http.log.access.log0 处理的请求 2025-04-30T05:25:17Z INFO http.log.access.log0 处理的请求2025-04-30T05:25:18Z INFO http.log.access.log0 已处理请求 $ biff 标记行 /tmp/access.log |系统中的瞬间时间| biff 时间 fmt -f ' %c ' |头-n3 | biff untag -s 2025 年 4 月 30 日星期三 1:25:14 AM EDT INFO http.log.access.log0 已处理请求 2025 年 4 月 30 日星期三 1:25:17 AM EDT INFO http.log.access.log0 已处理请求 2025 年 4 月 30 日星期三 1:25:18 AM EDT INFO http.log.access.log0 处理的请求 生成接下来 5 天的序列,即星期一、星期三或星期五的特定时间,然后在您的区域设置中格式化它们: $ biff time seq day Today -c5 -H 9 -w mon,wed,fri | biff time fmt -f ' %c ' 2025年5月12日星期一,美国东部时间上午9:00:00 2025年5月14日星期三,美国东部时间上午9:00:00 2025年5月16日星期五,美国东部时间上午9:00:00 2025年5月19日星期一,美国东部时间上午9:00:00 星期三,五月2025 年 21 月 9 日上午 9:00:00 EDT 打印当月剩余的每一天: $ biff time seq daily --until $( biff time end-of day now ) Today 2025-05-10T00:00:00-04:00[America/New_York] 2025-05-11T00:00:00-04:00[美国/纽约] 2025-05-12T00:00:00-04:00[美国/纽约] 2025-05-13T00:00:00-04:00[美国/纽约] [.. 片段..] 查找接下来 12 个月中每个月的最后一个工作日,并以简洁的格式打印它们: $ biff time seq -c12 Monthly -w mon,tue,wed,thu,fri --set-position -1 | biff 时间 fmt -f ' %a, %Y-%m-%d ' 星期五,2025-05-30 星期一,2025-06-30 星期四,2025-07-31 星期五,2025-08-29 星期二,2025-09-30 星期五,2025-10-31 星期五, 2025-11-28 星期三,2025-12-31 星期五,2026-01-30 星期五,2026-02-27 星期二,2026-03-31 星期四,2026-04-30 或打印每个月的第二个星期二,直到年底: $ biff time seq每月 -w 2-tue --until $( biff time现在已经年底了)| biff 时间 fmt -f ' %a, %F ' 星期二,2025-05-13 星期二,2025-06-10 星期二,2025-07-08