Skip to content

睡眠日期与每日笔记

夜间开始日是 iPhone 和 Android 的默认设置。 周二早上导出昨晚睡眠时,通常选择 昨天,也就是周一。Health.md 的每日睡眠摘要使用本地时间 12:00 到次日 12:00 的日记窗口,即周一正午到周二正午,而不是普通活动摘要的午夜分界。

在导出设置中选择 早晨结束日,即可将每个完整睡眠时段归入其在导出时区中结束的日期,不会在正午截断。周一晚上开始、周二早上结束的睡眠应导出 周二(今天);周二的午睡也归入周二。更改设置仅影响新操作,已保存的操作保留接受时确定的日期归属。

为什么睡眠会出现在昨天的笔记中

Section titled “为什么睡眠会出现在昨天的笔记中”

即使午夜后才入睡,这个窗口也能把通常的一晚放在一起。窗口包含起始正午,不包含次日正午。跨越正午的睡眠可能分别计入相邻两天的摘要。原始时间戳不会为了匹配笔记日期而被改写。

Apple 和 Android 都提供这两种睡眠日期归属方式。不同平台的指标、睡眠阶段、源记录和聚合方式仍可能不同。

夜间开始日: 以下是本地时间的虚构示例,不是真实健康记录。

睡眠或活动 导出日期
周一 23:45 到周二 07:30 周一
周二 01:00 到周二 07:30 周一,不是周二
周二午睡,14:00 到 14:30 周二
周二的步数和活动 周二
周一晚睡眠和周二活动 周一和周二

请核对导出所用的本地时区。其他应用的起床日标签或文件修改时间并不决定 Health.md 的日记日期。

  1. 检查日记日期和所选睡眠指标。
  2. 等待手表或源应用将数据同步到 Apple Health 或 Health Connect,再预览并重新导出该日。
  3. 核对访问权限。在 iPhone 上,HealthKit 的空结果无法说明读取是否被拒绝。在 Android 上,确认源应用确实向 Health Connect 写入了受支持的记录。
  4. 检查目标文件夹以及已写入、跳过或失败的结果。预览并不能证明文件已保存。缺失不等于零。

Daily Note Injection 和 API Endpoint 摘要使用该操作选定的睡眠日期归属方式。如果来源数据较晚同步,请按该方式重新导出对应日期,或检查计划任务的回溯范围。后台执行时间只是目标,并不保证写入成功。

原始或规范记录保留原始时间戳,并有各自的归属规则。不要从每日总量重建会话,也不要把源时间区间作为额外睡眠加到总量上。

夜间开始日: 在 Apple 上,原始归档按记录的原始开始时间,将记录归入当地午夜到次日午夜的日历日。睡眠摘要则按正午到次日正午的日记窗口裁剪时间区间。因此,原始 Sleep Analysis 查询即使成功并包含早晨的记录,该日期的睡眠摘要也可能为空。在排查摘要缺失之前,请先导出前一个日记日期,并检查 time_context.calendar_timezone。例如,9月22日 04:03–11:52 UTC 的记录在 UTC 时区全部属于9月21日的摘要;在 Europe/Lisbon 时区,最后52分钟位于当地正午之后,因此这部分计入9月22日。

按阶段记录睡眠并不要求存在显式的 inBed 记录:缺少该记录时,Apple 摘要使用现有睡眠状态阶段区间的并集。缺少卧床数据不会生成卧床时长。摘要查询失败应出现在 diagnostics.partial_failures 中;查询成功但没有符合条件的区间,则表示正常的数据缺失。静息心率使用单独的日历日查询,并且需要实际的静息心率测量值;睡眠阶段或单独授予读取权限都不能提供这项测量值。

healthmd_sleep_sessions 需要受支持的 Apple Health CLI/MCP 配置。Android 类型化 MCP 查询目前不受支持。请参阅平台能力和 MCP。

另见计划导出、故障排查和导出格式。