知乎作为一个高质量的文字社区,评论区的讨论往往非常有深度。然而,知乎默认的评论区时间格式是个让人头疼的小问题——它只显示”3 小时前””昨天””5 天前”这种相对时间。这在日常浏览中没问题,但如果你想追踪一场讨论的时间线、对比不同评论的先后顺序,这种模糊的时间展示就完全不够用了。

痛点:相对时间的局限

相对时间有几个明显的缺陷:

  1. 信息丢失:你永远不知道”3 小时前”到底是几点几分,无法在脑海中形成精确的时间锚点
  2. 跨天混乱:到了第二天,”昨天”就变成了”前天”,时间参考系一直在变
  3. 讨论追踪困难:一场技术讨论中,A 回复 B 的某个论点,但 B 的评论和 A 的回复可能都显示”2 天前”,你根本看不出谁先谁后

脚本的来历

之前在小众软件上看到一个关于知乎评论区时间展示混乱的吐槽帖,有位大佬当场写了一个油猴脚本来解决这个问题。

我用了好几个月,体验非常好。直到前段时间知乎做了一轮前端更新,脚本开始出现展示混乱的问题。于是我花了一个下午研究了一下知乎的新 DOM 结构,修复了脚本的逻辑,顺便把它发布到了 GreasyFork 上——这样后续知乎再有调整,可以直接从 GreasyFork 推送更新,不用手动安装新版本了。

安装和使用

脚本已发布在 GreasyFork:

安装地址

安装前提是你需要在浏览器中安装 Tampermonkey(油猴)扩展:

安装 Tampermonkey 后,点击上面的 GreasyFork 链接,再点「安装此脚本」即可。脚本会自动在知乎评论区生效,无需额外配置。

技术实现简述

脚本的核心逻辑其实不复杂,关键步骤有三步:

1. 找到时间元素

知乎评论区的时间信息挂在一个 span 元素上,旧版使用的是 title 属性存储完整时间戳。知乎更新后改用了其他属性,所以需要适配新的 DOM 结构。

2. 提取并格式化

从 DOM 元素中读取原始的 ISO 时间字符串(如 2024-01-15T14:32:08.000Z),然后用 JavaScript 格式化为 2024-01-15 14:32:08 这样的可读格式,替换掉原来的相对时间文字。

3. 处理动态加载

知乎评论区是懒加载的——滚动到底部才会加载更多评论。因此脚本需要监听 DOM 变化(MutationObserver),当新的评论被插入页面时,自动对新评论的时间做同样的精确化处理。

后续计划

我打算把这个脚本的功能继续扩展,比如:

  • 一键跳转到被引用的评论:知乎的引用格式是”回复 xxx”,但无法直接跳转
  • 高亮 OP(题主)的评论:在长讨论中快速定位题主的发言
  • 评论导出功能:把有深度的讨论导出为 Markdown

大家如果有其他知乎体验上的痛点,欢迎留言提需求。如果对油猴脚本开发感兴趣,后续我也会考虑出一期油猴脚本的入门教程。