Circuit Python MatrixPortal M4中time.localtime()返回时间异常求助
解决CircuitPython MatrixPortal M4 time.localtime()返回2000年初始时间的问题
MatrixPortal M4没有内置带电池的实时时钟(RTC),断电重启后系统时间会重置到CircuitPython的起始时间点(2000年1月1日),这就是你遇到问题的核心原因。以下是两种可行的解决方法:
方法1:通过WiFi从NTP服务器同步时间
这是最可靠的方式,能自动获取当前准确时间:
首先确保已经安装adafruit_ntp库(可通过CircuitPython官方bundle包安装),然后使用以下代码:
import time import board import wifi import socketpool import adafruit_ntp # 填入你的WiFi信息 WIFI_SSID = "你的WiFi名称" WIFI_PASSWORD = "你的WiFi密码" # 连接WiFi wifi.radio.connect(WIFI_SSID, WIFI_PASSWORD) # 创建socket池并初始化NTP pool = socketpool.SocketPool(wifi.radio) ntp = adafruit_ntp.NTP(pool, tz_offset=8) # tz_offset填你的时区偏移,比如东八区设为8 # 同步时间后,time.localtime()即可返回正确时间 print("Time: ", time.localtime()[3], ":", f'{time.localtime()[4]:02}') print(time.localtime()[0], time.localtime()[1], time.localtime()[2])
方法2:手动设置系统时间
如果不需要WiFi,可以手动指定时间:
import time # 设置为目标时间(格式:年,月,日,时,分,秒,周几,年内第几天,夏令时标记) manual_time = time.struct_time((2023, 3, 15, 11, 39, 0, 2, 74, -1)) # 将结构化时间转换为时间戳并设置系统时间 time.time = lambda: time.mktime(manual_time) + (time.monotonic() - time.monotonic()) # 验证输出 print("Time: ", time.localtime()[3], ":", f'{time.localtime()[4]:02}') print(time.localtime()[0], time.localtime()[1], time.localtime()[2])
注意:手动设置的时间在设备断电后会丢失,重启需要重新配置。
内容的提问来源于stack exchange,提问作者ceb2120
相关产品推荐
相关产品推荐

