You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP-12F使用MicroPython设置RTC时钟后时间偏多约19小时问题咨询

问题核心原因

1. RTC入参顺序不匹配

ESP系列的MicroPython固件中,machine.RTC().datetime()方法的入参元组存在两种常见格式,你当前传入的参数顺序和固件要求的格式不一致,会导致时间参数错位:

  • 官方标准ESP端口格式要求:(年, 月, 日, 星期, 时, 分, 秒, 亚秒)
  • 部分旧版/定制固件格式要求:(年, 月, 日, 时, 分, 秒, 星期, 年积日)

你构造的时间元组(2021, 11, 21, 23, 42, 0, 6, 325)是按第二种格式编写的,如果你的固件是第一种标准格式,会把你填写的小时值23错误识别为星期参数,后续的分、秒等参数全部错位,最终计算出错误的时间。

2. 时区转换偏移

utime.localtime()方法默认会将RTC存储的UTC时间转换为本地时区时间,如果你的固件默认配置了非零时区偏移,就会出现你看到的19小时左右的时间差。


解决步骤

  1. 先确认RTC本身存储的时间是否正确
    设置完时间后直接执行print(machine.RTC().datetime())读取RTC原始值,如果输出和你预设的时间一致,说明RTC设置本身没问题,是utime.localtime()的时区转换导致的偏差。这种情况你可以直接读取RTC原始值使用,或者将固件默认时区修改为UTC+0即可消除偏移。

  2. 如果RTC原始值就存在错误,调整入参顺序适配你的固件
    如果你使用的是官方标准ESP固件,将设置代码调整为如下格式即可:

import utime
import machine
# 元组顺序:年、月、日、星期、时、分、秒、亚秒,星期填0-6即可,亚秒无特殊需求填0
rtc_time = (2021, 11, 21, 6, 23, 42, 0, 0)
machine.RTC().datetime(rtc_time)
# 验证结果
print(machine.RTC().datetime())

内容的提问来源于stack exchange,提问作者akoel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:06:06