RTC 时钟在电池供电的 CMOS 内存中节省了时间(现在它只是一个模拟旧设计的集成度更高的芯片)。CMOS 内存映射是 PC 兼容计算机上的标准配置。根据这些CMOS 内存映射文档:
00h 秒 (BCD 00-59, Hex 00-3B) 注意:位 7 是只读的 01h 第二次警报(BCD 00-59,十六进制 00-3B;如果 C0-FF,则“不关心”) 02h 分钟 (BCD 00-59, Hex 00-3B) 03h 分钟警报(BCD 00-59,十六进制 00-3B;如果 C0-FF,则“不关心”)) 04h 小时(BCD 00-23,十六进制 00-17 如果 24 小时模式) (BCD 01-12, Hex 01-0C if 12 hr am) (BCD 81-92。十六进制 81-8C 如果 12 小时 pm) 05h 小时警报(与小时相同;如果 C0-FF 则“不关心”)) 06h 星期几(01-07 星期日=1) 07h 月份日期(BCD 01-31,十六进制 01-1F) 08h 月 (BCD 01-12, Hex 01-0C) 09h 年(BCD 00-99,十六进制 00-63)
因此,将这些字段转换为您喜欢的任何格式是一种直接的日历数学:Unix 时间戳、DOS 类型的日期/时间格式或其他格式。
请注意,上图中缺少的一个字段是时区和 DST 设置。所以,如果你双启动到 Windows 和 Linux,你可能会遇到问题。Windows 默认为您的本地时区,而 Linux 通常假设 RTC 日期/时间是 UTC(我认为这更合理)。