klog 格式规范深度解读:从日期、时长到开放范围的精确定义

发布时间:2026/10/6 23:08:23

klog 格式规范深度解读:从日期、时长到开放范围的精确定义 klog 格式规范深度解读从日期、时长到开放范围的精确定义【免费下载链接】klogCommand-line tool for time tracking in a human-readable, plain-text file format.项目地址: https://gitcode.com/gh_mirrors/klog/klogklog 是一款采用人类可读纯文本格式进行时间追踪的命令行工具而 klog 格式规范文件格式规范 1.4 版正是它的核心灵魂。这份规范完整记录在 Specification.md 中任何符合规范的.klg纯文本文件都能被 klog 准确解析并统计出总时间。无论你是刚接触时间追踪的新手还是想把手账、工时记录迁移到命令行的高级用户读懂 klog 格式规范都能让你少踩坑、更高效。本文将从日期、目标时长、条目类型到开放范围逐层拆解这套精确定义的纯文本时间追踪格式。一、为什么值得先读懂 klog 格式规范klog 与传统时间追踪工具最大的不同在于它把数据文件当作纯文本数据库来对待所有时间记录都保存在一个.klg文本文件中你既可以用任何编辑器直接修改也可以交给 klog 命令行工具来解析、汇总和报告。先看一个完整的示例记录感受一下这套格式的直观程度2024-03-15 (8h!) 春季项目冲刺周专注开发 09:00 - 10:30 团队晨会 #meeting 2h30m 编码时间 1h 午餐休息 14:00 - ? 正在进行的任务短短几行就包含了日期、目标时长、摘要、标签、时间段、时长和开放范围——这正是 klog 格式规范定义的记录Record结构。接下来我们逐一拆解。二、klog 记录Record的基本结构一条 klog 记录必须是一个连续的文本块内部不能出现空行。它的第一行必须以日期开头同一行后面可以跟目标时长随后是可选的记录摘要和任意数量的条目。在源码中这个结构对应 klog/record.go 里的Record接口。2.1 日期格式的精确定义klog 格式规范要求日期必须包含 4 位年份、2 位月份和 2 位日期按年-月-日顺序排列且各部分之间只能用-或/分隔2024-03-15推荐写法2024/03/15等效写法两个值得注意的细节日期必须是格里高利历中的真实日期比如2023-02-30会被判定为非法另外-和/不允许混用例如2024-03/15直接报错。这一逻辑在 klog/date.go 的日期解析函数中实现。2.2 目标时长Should-Total的写法如果想给某一天设定目标工时可以在日期后面加一个括号包裹的目标时长(8h!)表示今天的目标是 8 小时(5h15m!)表示今天的目标是 5 小时 15 分(-3h30m!)目标也可以是负数它的语法就是一段时长加一个感叹号再用括号包起来。对应源码见 klog/shouldtotal.go。三、三种条目类型时长、时间段与开放范围klog 格式规范中的条目Entry是一个抽象概念实际落地为三种类型时长Duration、时间段Range和开放范围Open Range。源码中对应 klog/entry.go 的Entry类型。每条条目必须独占一行并以固定缩进开头。3.1 时长Duration的书写规则时长用来记录一段确定的耗时格式非常直观1h表示 1 小时5m表示 5 分钟4h12m表示 4 小时 12 分-8h30m表示负 8 小时 30 分用于扣减时间klog 格式规范里有几条容易被忽视的细节小时部分可以超过 24例如50h完全合法当出现小时时分钟不能超过 591h59m合法、1h75m非法但如果只有分钟则可以超过 59比如119m。默认时长为正数也可以显式写4h12m负数则必须加-前缀。解析与序列化的实现位于 klog/duration.go。3.2 时间段Range与跨天偏移时间段用两个时间点表示一段区间中间以-连接klog 格式规范推荐在破折号两侧各留一个空格8:00 - 9:0011:00am - 1:00pm23:40 - 3:12从前一天 23:40 到当天 3:120:30 - 4:00从当天 0:30 到次日 4:00规范的硬性要求是开始时间与结束时间必须按时间先后顺序书写两者可以相等。想要表达跨天场景就用前缀把时间移到前一天或用后缀移到后一天。时间段的核心逻辑在 klog/range.go 中接口定义同样位于该文件。3.3 开放范围Open Range的占位符规则开放范围是 klog 格式规范中非常实用的一项设计当你开始一项活动但还没结束时把结束时间用问号?占位即可9:00 - ?4:00pm - ??占位符可以重复书写例如9:00 - ???目的是方便与其他条目做视觉对齐。但有两个约束必须牢记占位符不能被跨天偏移不能写成?之类并且一条记录中最多只能出现一个开放范围。这是因为当用工具结束开放范围时如果存在多个就不知道要关闭哪一个了。开放范围的定义见 klog/range.go 的OpenRange接口它的开始与结束操作Start/EndOpenRange则在 klog/record.go 中。四、时间Time的精细规则24小时制与 am/pm时间值必须包含小时和分钟两部分中间用:分隔默认按 24 小时制解读14:18合法6:30am、2:00pm使用 12 小时制01:00表示次日凌晨 1 点klog 格式规范对时间还有几个硬性规定分钟必须在 0–59 之间且个位数要补零9:05合法9:5非法24 小时制下小时可为 0–2412 小时制下只能为 1–12特殊地24:00被解释为次日0:00但24:00是被禁止的写法。另外前面提到的前一天与后一天偏移是时间跨天的重要语法糖。完整的解析与比较逻辑位于 klog/time.go。五、缩进与标签容易被忽略的格式约束条目必须缩进一次才能被识别klog 格式规范允许三种缩进方式4 个空格推荐、2 或 3 个空格、或 1 个制表符。如果需要第二级缩进例如条目摘要换行书写缩进序列要出现两次。同一记录内部缩进风格必须统一否则解析器无法判断层级——这在规范脚注中有明确说明。相关解析逻辑可参考 klog/parser/txt/indentation.go 和 klog/parser/txt/line.go。标签Tag是 klog 分类记录与条目的利器可以出现在任何摘要文本中#gym、#home-office简单分类#ticket891带值标签#project22/48.3带引号的标签值标签名只能由字母、数字、_和-组成且不区分大小写标签值则区分大小写可以用引号包裹以容纳特殊字符例如项目编号或人名。标签解析实现在 klog/summary.go 与 klog/tag.go 中。六、文件组织多个记录如何存放一个.klg文件可以包含任意数量的记录记录之间必须用空行分隔。文件本身必须使用 UTF-8 编码换行符统一使用 LF 或 CRLF两者不要混用文件末尾建议保留一个换行。规范还强调文件中不允许出现格式规范之外的内容这使得 klog 文件可以完全被视为一种文本数据库便于程序化处理。七、总时间计算klog 的求值规则klog 格式规范对如何求和也有明确约定理解这一点能帮你避免统计偏差总时间 所有条目的累加正数增加、负数扣减重叠的时间段会被全额计入。例如12:00 - 13:00与12:30 - 13:30两条加起来是 2 小时不会去重跨天时间段全部计入记录日期当天不会拆分成两天开放范围默认不参与统计只有显式请求时才纳入计算。八、常见易错点清单 最后把最容易出错的几个点汇总成清单写文件时对照检查即可日期分隔符-与/不要混用有小时单位的时长里分钟不要超过 59开放范围?每记录只能出现一次且不能带跨天偏移同一记录内缩进风格必须一致不要一会儿空格一会儿 Tab记录内部不要出现空行记录之间要有空行文件编码务必是 UTF-8。结语让 klog 格式规范成为你的时间管理底座klog 格式规范的精妙之处在于它用极简的纯文本语法实现了人类可读、机器可解析的完美平衡。只要掌握了日期、时长、时间段与开放范围这几大核心概念你就能写出规范合法的.klg文件再配合 klog 的total、report、start、stop等命令实现自动化的时间统计。规范的完整定义可随时查阅 Specification.md而它的 Go 语言实现则分布在 klog/ 目录中从 klog/date.go、klog/time.go、klog/duration.go 到 klog/range.go每个概念都能在源码中找到一一对应的实现。现在就打开编辑器写下你的第一条 klog 记录吧【免费下载链接】klogCommand-line tool for time tracking in a human-readable, plain-text file format.项目地址: https://gitcode.com/gh_mirrors/klog/klog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 23:08:41

async-stripe 快速入门:5 步完成你的第一个 Stripe 支付集成

async-stripe 快速入门:5 步完成你的第一个 Stripe 支付集成 【免费下载链接】async-stripe Async (and blocking!) Rust bindings for the Stripe API 项目地址: https://gitcode.com/gh_mirrors/as/async-stripe 对于想要在 Rust 项目中接入 Stripe 支付功…

2026/10/6 23:24:53

UE5 Niagara粒子系统:死神特效完整制作流程与模块化思维

提到“死神特效”,你脑海里会浮现什么?暗色斗篷扬起的烟尘、往上升腾的幽蓝灵魂、刀刃划过的发光残影、地面散开的黑色法阵。这类效果几乎是暗黑系BOSS战、召唤仪式和死亡结算画面的标配。在UE里把这类效果做出来,今天绕不开的工具就是Niagar…

2026/10/6 23:24:53

用JavaScript优化大模型调用:Token压缩、缓存与模型路由实战

平时写 JavaScript 多半是在折腾页面交互、接口数据,但你可能没想到,它也能跑去给大语言模型“打理财务”。我这里说的不是炒股,而是真正帮大语言模型省钱省电:用 200 行不到的 JavaScript,写了一个能压缩请求、缓存结…

2026/10/6 23:24:53

RTS5411 Type-C USB3.0 HUB 原理图与PCB设计全解析

1. 为什么选择 RTS5411 来做这个 USB3.0 HUB1.1 从一颗芯片说起:RTS5411 的定位与核心优势搞硬件设计的同行应该都有体会,USB HUB 芯片市场长期被几家大厂把持,选型时既要看通道数、协议支持,又要考虑封装、功耗、外围元件数量和整…

2026/10/6 23:24:53

AI Agent 记忆底座实战:从向量库选型到检索策略与更新机制

前阵子帮朋友排查一个客服 Agent 的诡异行为:客户在对话里明确说了三遍“以后公司统一走银行转账,不再用支付宝了”,Agent 当时答应得好好的,下一轮客户问“收款有什么要注意的”,它张口就是“支持支付宝付款&#xff…

2026/10/6 23:24:53

MOS管衬底接法全解析:从原理图到版图的避坑指南

1. 衬底到底该接哪儿:一个被很多人忽略的基础问题做模拟电路或者版图的朋友,尤其是刚入行的,大概率都遇到过这个场景:画原理图的时候,NMOS的衬底引脚随手就接到了地上,PMOS的衬底引脚随手就接到了电源上&am…

2026/10/6 23:19:53

CPU性能优化方法论:从流水线、缓存到伪共享的硬件原理

1. 硬件为什么快:藏在芯片里的几台“流水线工厂”硬件体系结构这门学问,听起来像是学电脑的人才会碰的东西。但你要是经历过线上服务偶发超时、数据库连接被打满、或者同一套代码换台机器性能翻倍却说不清原因,就会意识到:硬件不是…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑