许多嵌入式端口,包括 MicroPython,使用 2000 年 1 月 1 日的纪元时间。这比 1970 年 1 月 1 日的 UNIX 纪元时间晚了 946,684,800 秒。如果您首先使用 NTP 设置 RTC,您将能够阅读 MicroPython 的以秒为单位的纪元。听起来您在网络上,所以应该很容易做到。假设您已经连接到 WiFi,以下是设置 RTC 时间的方法:
import ntptime
# General call to set RTC shown
# Note that when setting datetime, Weekday is ignored. MicroPython uses its internal calendar.
# machine.RTC().datetime((yyyy, mm, dd, Weekday, hh, mm, ss, us))
# RTC code follows.
ntptime.settime() # This library call sets RTC to ntp time.
machine.RTC().datetime() # Read the hardware RTC in datetime format.
在你给你的 ESP32 GMT NTP 时间后,你可以从 MycroPython Epoch 读取秒数:
import utime
utime.time()
我的结果是这个数字,634791870。它是整数秒。使用 MicroPython,此调用的精度不会超过秒。 (您可以使用 datetime() 获得微秒,但这是日期时间而不是时间戳格式。)
接下来你必须做一点算术:
timestamp = 946684800 + utime.time()
这会为您提供 Unix 纪元的 UTC 时间戳(以整数秒为单位)。 (MicroPython 忽略时区。)要调整本地时间,您需要从 0 度经度向东每小时添加 3600,然后向西减去。
如果您的应用程序需要浮点格式,您只需添加一个 0.0。