玩具箱 | 关于时间记录的再进化

4082字

昨天跑通了 IOS 日历日程导入 Obsidian 的快捷指令,手舞足蹈,欢欣雀跃,于是趁这个机会总结一下现在在时间记录方面的思路和相关工具。

方法论

我做时间记录的核心是数据向外输出,不在软件内部统计,如图所示,不管是用 Calfolw、时光似金、3x3 或者其他的记录 APP,最终数据都汇入 IOS 日历,进而从 IOS 日历再汇出到Excel、Python 或者飞书多维笔记等统计工具。这样做的好处是,可以随意根据不同阶段的不同需求去使用新的工具,调整使用工具的方式,不担心数据的中断和迁移,同时,也不局限于某个软件内部的统计方式,尽可以拿来主义,为我所用。IOS 日历虽然不是可读的开放性文件,但它稳定、稳妥,本身也是一个好用的日程工具,如果日后改用安卓端,也可以听过同步至 Google 日历进而同步至第三方日历,再从安卓端寻找对应的记录用 APP,不会打断这个流程。

工具论

根据以上思路核心,我对记录工具的要求就从“符合一整套记录、整理、归纳的使用习惯(实在太难了)”,逐渐转向了追求“记录这个单一动作”的轻巧便捷。目前使用的一整套工具如下:

  • 记录入口:时光似金(主要入口),JotDay(同步运动数据)
  • 桥梁:快捷指令+自动化(日历日程同步至 Obsidian Daily)
  • 存放、整理:Obsidian(Base 或者 Dataview)
  • 统计及复盘:Calendarlog(以前的 EVlog)、TimeView、飞书多维表格……

其中,时光似金的记录逻辑是目前我用下来最符合直觉也最轻便的,JotDay 用来同步 IWatch 记录的运动数据,可以做到完全无感。日程数据写入日历后,通过快捷指令自动化,自动同步至 Obsidian 的 Daily 文件,再通过 Dataview 进行统一展示、存放。看时间统计则有很多种方式,比如迅速看一眼大致日程分类时间消耗我会用 Calendarlog,即时读取统计数据。需要看某个事件的单独统计会用 TimeView 进行筛选。做整体性的复盘,目前我觉得飞书多维表格非常好用,已经完全取代了 Excel。

这里特别说一下为什么用了一年多 3x3 之后我又回到用时光似金,一方面是因为我非常喜欢时光似金的事后记录逻辑(即不是在做某件事的开始按下记录,而是在做完某件事之后按下记录。),另外一方面是,3x3 的整体使用逻辑是“待办”,而待办要联动场景,才能在负一屏小组件上快捷点击开始/结束记录。以读一本书为例,每次需要在对应的日/周/月待办面板建立待办,给待办打上 Tag,跳转到场景页面,将场景关联对应待办,这样组件中才会出现对应的快捷按键。高峰时期我两天读完一本书,每次都要进行这样的一套动作,非常繁琐。此外,如果同时读好几本书,则需要建立好几个场景,分别对应不同的待办,否则就需要在记录日程之后,进入 APP 去再关联对应的待办。更何况 3x3 的日历同步规则的高度自定义也造成了逻辑上的繁杂,往往不同的标签会对应不同的记录方式和同步结果,很容易就大脑懵圈了。

时光似金纯粹用于记录端的话,在逻辑上就简单很多。它支持一种叫作“备注型子任务”的任务形式。可以通过点击待办标题来快捷输入,随用随建,右滑即走,我录了一个 GIF 来演示:

当它被同步到日历上的时候,格式就会是“演示标题-任务 2-编辑”。“演示标题”被我作为日程的分类名称,创建好之后就不再修改,具体的事件则作为备注型子任务,随时进行创建和修改,全程不需要跳转到其他页面。这个日程格式同样有利于表格类工具整理,可以通过匹配连接符来迅速实现数据分列。

唯一的缺点是自从 IOS 版本更新对组件功能进行了调整,原来时光似金很好用的小组件(会自动学习记录习惯,并且把当前时段最有可能的活动推到最上面)就没办法再用了,现在每次记录必须点进 APP。不过瑕不掩瑜,整体还是非常方便。

常见问题

怎么给活动分类

常见的时间记录展示会把时间分类写得很细,这是社交媒体性质决定的,这样展示起来更好看,更“出片”。但在实际使用中,这种做法就有点像记账的大量一级分类和二级分类,不仅没提供便利,反而容易陷入分类的迷宫。我建议从复盘的角度来思考这个问题,先想“我想怎么去统计时间?”或者“我想在时间轴上怎么展示记录?”,再倒推所需要的分类,会比较有效。另外,也不着急在一开始就搭建“时间分类体系”,体系就是用来推倒的,还会根据不同的生活重心不断改变,需要不断调整、适应、修改,最终得到一个彼此之间相处得比较好的结果。

同时进行多个活动怎么记

我不擅长多线程作战所以这种情况比较少,一般就是在做第二件事的时候自己注意看一下时间点,然后手动在日历日程上添加。或者在时光似金上创建一个 1s 的记录,再在日历上手动调整开始时间。记录时间习惯之后会对现在几点几分这件事很敏感,所以并不麻烦。另外,我不记录例如“玩手机”“听歌”这种活动,也降低很多记录的决策量。

这段时间事情很杂很碎怎么记

半个小时内,可能玩了手机,看了五分钟视频,去厨房按了一分钟的微波炉,拿了外卖,要怎么记到时间轴里呢?在记录时间之前,要先想好记录的目的是描述型还是结果型。描述型的意思是,用时间记录来“描述”这一天,而结果型意味着,记录的目的是用来复盘。对于前者而言,这半个小时的细节很重要,需要事无巨细地体现在时间轴上,那么如果一定要记录,最好的做法是调整行为,或者接受它们被归为“日常活动”这一大类。对于后者而言,这部分时间可能就没有什么复盘的价值,那么就直接不记录也可以,或者在其中针对某些需要复盘的时间段进行单独记录。我的做法是建立一个不同步日历的“归档”任务,日常性的活动不分彼此,全部记入归档。

中途走神了怎么记?

记录看课程视频的时间,中间走神了好几分钟去玩了,需要从中间破开,记为两段时间吗?我不会这么记。首先这种记录方法会让记录过程变得很繁琐,而且时间记录≠专注时长,没必要把它当作“不走神挑战”来执行。

还有一种办法是大概估一下走神时间和专注时间,比如 17:00-19:00的两个小时,中间走神 30 分钟,我有时候也会把结束时间写到 18:30, 这样既保证了时间上的相对准确,也不至于在当天时间轴上出入太大。

忘记记录了,怎么补记

其实时间记录远不像很多人想象的那样追求极致的精确,长期记录时间后往往会发现,几分钟,几十分钟的出入,甚至更久,在时间数字上都是可以被接受的。所以偶尔忘记了也没有多大关系,补记不够准确,影响也不大。此外,生活中有非常多的时间戳可以被利用,比如聊天记录、SNS 发布时间、视频总时长,都可以作为补记的辅助。

怎么复盘

我很反感把时间记录和“高效”、“有效时间”、“负面时间”等概念挂钩,所以复盘更多是把一段时间内的生活具象化,意识到“原来我做了这些事”、“更加了解自己”,重点在“觉察生活”,而不是“效率人生”。何况每天上八个小时的班,自己的时间其实很少,玩不出什么花来,所以我的复盘大部分是用的纸笔……我会每个月月底大概花半个小时,用上面提到的工具统计出这个月的各项事件和具体时长,然后写到一本月复盘的 TN 笔记里。在这里,重点是“写”这个动作,写下来会让我对具体做了什么更有概念,有时候也会对下个月的重点稍作调整。

另外,年底我会再做一次时长复盘,目的是想看看某些事件在全年的时间跨度上究竟消耗了多少个小时。这个我用飞书多维表做,写在年底的总结博客上。

快捷指令

——其实日程数据写入 Obsidian才是我写这篇想蘸的饺子醋。

我用的方法是快捷指令+自动化,系统版本 IOS26, 总体的逻辑是通过捷径读取日程标题和持续时间,将其转化为文本,再写入对应的 Obsidian Daily 文件。快捷指令展示起来不是很方便,我把几个难点写一下,有兴趣的话可以自己来搭。

第一个难点是怎么让快捷指令读取昨天的日历数据。在查找日历日程指令里,开始日期只支持指定的时间、介于某两个指定的时间,临近的几天和“是今天”。其中,临近的 1 天,指的是“昨天+今天”。但显然,如果要求快捷指令读取今天的日程,那么具体运行快捷指令的时间就会很晚,而且假设错过了“今天”的时间点,也很难再补上。我觉得让它读昨天的日程会比较好,可惜指令不原生支持,只能自己来绕。

假设今天是 1 月 2 日,首先要理解的是,在介于指令里,它的意思是,“介于”某个日期的某个具体的时间点。比如 1 月 1 日的 12:00, 到 1 月 2 日的 18:00。所以首先我们要拿到“昨天”的 0:00和 24:00两个时间点。可以通过“调整日期”指令做到,“调整日期”有“从当前日期减去 1 天”的指令,但这个指令是包含具体时间点的,其内在的逻辑是“从 1 月 2 日的 18:00减去一天,变为 1 月 1 日的 18:00”,要拿到 0:00这一时间点,还需要套一个“调整日期”,设置为“从调整后的日期(变量),获取哪天开始

再根据以上的逻辑,从“当天日期”获取“哪天开始”,就会拿到“1 月 2 日 0:00”的时间数据。在“查找日历日程”里,设置介于两个时间点之间,就是完整的“昨天”。

第二个问题是,怎么获取到“每一个”日程的文本?这里可以用 重复每一项,具体设置为:重复 日历日程 中的每一项→从 重复项目 获取 标题 →从 重复项目 获取 持续时间。然后计算持续时间,用 计算 指令,设定持续时间➗3600,拿到小时数,并格式化为保留 1 位小数。最后使用 文本合并,将标题和持续时间合并为 1 条文本,设为“日程数据”变量后,再使用一次文本合并,使用 新行 合并“日程数据”。

重复每一项 指令会多次执行这个流程,直到将当天的所有日程全部查询并形成文本完毕。

最后一个问题,怎么把文本写入 Obsidian?这里用到的是 追加到文本文件。这个指令可以把文本写入对应路径的文件当中,并且设置是追加到文本最末还是最前。首先要拿到的是文件路径。因为实际获取的是“昨天”的日程,所以需要追加到“昨天”的 Daily 文件中。首先把之前获取到的“1 月 1 日 0:00”时间,根据 Daily 文件的名称格式化。比如我的是“2025-01-01. Md”,就格式化为“YYYY-MM-dd”。把格式化后的结果设置为变量,然后在 追加到文本文件 中,将文件路径写为 日期变量.md

最后

上次系统地写这个话题应该还是 2023 年,一转眼坚持做时间记录已经快三年,工具几经变易,想法也数度改变,翻看以前的博客甚至还有很多画的饼,比如 2023 年说的“还比如,因为日历对快捷指令的出色支持,我们可以自主扩展功能”,到 2025 年才真正实现……

❤️