Многие встроенные порты, включая MicroPython, используют время эпохи 1 января 2000 года. Это на 946 684 800 секунд позже, чем время эпохи UNIX 1 января 1970 года. Если вы сначала установите свой RTC с помощью NTP, вы сможете прочитать эпоху 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()
Это дает вам отметку времени UTC из эпохи Unix в целых секундах. (MicroPython игнорирует часовой пояс.) Чтобы настроить местное время, вам нужно добавить 3600 для каждого часа, идущего на восток от 0 градусов долготы, и вычесть это на запад.
Если вашему приложению нужен формат с плавающей запятой, вы можете просто добавить 0.0.0.0.
person
stanely
schedule
12.02.2020