习惯记录

在浏览器本地跟踪每日习惯打卡:自动累计连续天数与周期完成率,数据只写进本机 localStorage,不上传任何服务器。

每天喝水 8 杯连续 5 天(演示值)
睡前阅读 20 分钟连续 3 天(演示值)
步行 6000 步连续 2 天(演示值)

使用方法

  1. 在「习惯名称」填一条要跟踪的习惯(示例:每天喝水 8 杯),按回车或点「添加习惯」。
  2. 在「连续目标」填周期天数(示例 30 天),完成率按最近 30 天里打卡的天数比例计算。
  3. 每天完成后点该行的「今日打卡」,按钮变为「已打卡」,连续天数实时加 1。
  4. 点错可再点一次撤销当天打卡;点「删除」移除整条习惯及其历史记录。
  5. 点「导出打卡记录 CSV」把全部打卡历史存成带 BOM 的表格文件,清浏览器数据前建议先导出。

习惯记录能解决什么问题

习惯记录解决的是「坚持了多少天说不清」:纸质日历看不出断档,手机 App 要注册账号还要上传行为数据。本页把习惯名和每天的打卡日志写进浏览器自带的 localStorage,打开页面立即看到每条习惯的连续天数,30 天周期内打卡 26 天就是 86.7% 的完成率,全部计算与存储都在本机完成。

它不做提醒——到点推送需要系统能力,请配合喝水提醒或番茄钟计时器使用;也不做长期目标的拆解,那属于目标设定工作表的范围。

原理与规则说明

存储结构。全部数据是一个 JSON 对象,写入 localStorage 键 lq_habit_v1:每条习惯含名称与打卡日志数组,日志元素是形如 20261004 的 8 位日期键(本地时区的年月日,不是时间戳),约 43 字节一条。按 Chrome 每源约 5MB 的配额估算可存 12 万条以上,个人使用远打不到上限。

连续天数算法。连续天数 = 从今天(或昨天,若今天还没打卡)往前逐日回溯、日期键连续存在的天数。以 2026-10-04 为当天:日志里有 09-29 至 10-03 五天、今天未打卡时连续 5 天;今天打卡后变 6 天;若 10-02 断档,往回只能数到 10-03,连续归 1。今天没打卡不清零,是「当天未结束不应惩罚」的口径;跨月用日期差计算,09-30 到 10-03 正确得 3 天。

完成率口径。完成率 = 周期内打卡天数 ÷ 周期天数。30 天周期打卡 26 天即 86.7%。回溯与日期差只依赖 Date 的本地时区,中国大陆无夏令时,日期键不会漂移;若设备时区改动,历史键不变,仅「今天」的判定随之改变。

完整示例(数值仅作演示)

默认示例三条习惯:每天喝水 8 杯(演示连续 5 天)、睡前阅读 20 分钟(演示连续 3 天)、步行 6000 步(演示连续 2 天)。首次打开时若本机没有历史数据,页面自动载入这三条并预填最近几天的日志;点「载入示例」可随时还原。打卡日志中的日期键与正文对照表的口径示例一一对应。

输入范围与对照表

习惯名称 1~20 个字(超出截断报错),每机最多 50 条习惯,连续目标 1~365 天。下表给出常见习惯的建议频率与打卡口径,默认展示 12 行,点「加载更多」展开其余 4 行。

习惯建议频率打卡口径示例
每天喝水 8 杯每日当日饮水满 8 杯
步行 6000 步每日手机计步不低于 6000
睡前阅读 20 分钟每日当日累计满 20 分钟
早睡 23:30 前每日当晚 23:30 前上床
每周跑步 3 次每周 3 次单次 2 公里以上记 1 次
力量训练 30 分钟每周 3 次完成当日计划动作组
写 200 字日记每日当日写满 200 字
背 20 个单词每日完成一组 20 词
不喝含糖饮料每日全天 0 次
冥想 10 分钟每日计时满 10 分钟
复盘当日开支每日当日账目录入完成
拉伸 10 分钟工作日下班后计时满 10 分钟

输入范围、边界与精度说明

输入校验。习惯名称为空、超过 20 字、与已有习惯重名,分别给出指出字段与上限的中文报错;习惯数量达到 50 条上限时拒绝添加(防止列表长到难以操作)。所有非法路径都在结果区显示具体文案,不会静默丢弃。

存储边界。localStorage 在隐私模式、存储配额满或用户禁用时会抛异常,页面捕获后提示「记录无法保存」而不是假装成功;清除浏览器数据会连带删掉打卡历史,导出的 CSV 是唯一的异地备份途径。同一浏览器的多个标签页共享同一份数据,最后写入者覆盖。

隐私边界。数据不落服务器:页面没有后端提交逻辑,可在开发者工具 Network 面板确认除页面资源外无任何请求;换设备或换浏览器数据不跟随,这是纯本地存储的代价,也是隐私的来源。

常见问题

习惯记录的数据存在哪里,会上传吗?

存在浏览器本机的 localStorage(键 lq_habit_v1),不上传服务器。换浏览器、换设备或清除站点数据后记录不会出现,删除前请先导出 CSV。

今天还没打卡,连续天数会清零吗?

不会。算法从昨天开始回溯,今天打卡后并入连续;只有昨日之前的断档才会让连续天数重新从最近一次打卡算起。

连续天数和完成率有什么区别?

连续天数衡量不间断的势头,断一天就归位重算;完成率衡量周期内的总量达成,30 天打卡 26 天是 86.7%,中间断档不归零。两者一严一松,配合看更合理。

跨月、跨年连续会算错吗?

不会。日期键是年月日字符串,回溯按公历逐日递减,09-30 到 10-03 的日期差实算为 3 天,跨月跨年都正确;中国大陆无夏令时,不存在时钟回拨导致的重复键。

隐私模式或无痕窗口里能用吗?

能打开也能打卡,但 localStorage 可能被禁用或随窗口关闭清空,页面会提示记录无法保存。长期跟踪请用普通窗口。

最多能记多少条习惯、多少天?

页面限制 50 条习惯;日志按每天每条约 43 字节估算,浏览器 5MB 配额可存十几万条,正常使用不会触顶。

导出的 CSV 打开是乱码怎么办?

本页导出已带 BOM(\ufeff),Excel 直接打开中文正常;若你用其他工具导出后乱码,多半是文件缺 BOM,用「UTF-8 with BOM」重新保存即可。

两条习惯可以同名吗?

不可以,重名会被拒绝并提示已存在。同名会导致日志归属混乱,想区分场景可在名称里带上时段,例如「晨间阅读 20 分钟」。

相关工具

  • Mood记录:按天记录情绪状态,与习惯打卡同属本地日志型工具。
  • 清单生成:一次性待办清单,适合与长期习惯互补。
  • 番茄钟计时器:25 分钟专注单元,给习惯执行提供时间盒。
  • 在线记事本:自由文本记录,补充结构化打卡之外的细节。
  • 目标设定工作表:把年度目标拆成可执行项,再交给习惯记录落地。
  • 喝水提醒:按间隔提醒饮水,与「每天喝水 8 杯」口径直接对应。
  • 时薪计时器记录:按小时记录工作时长,另一种本地记录口径。