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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:20