首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Micropython和EPOCH

Micropython和EPOCH
EN

Stack Overflow用户
提问于 2019-07-23 07:09:30
回答 2查看 1.1K关注 0票数 1

我想发送一个Esp32在石墨数据库中的数据,为此,我需要时间戳,这必须是纪元格式。

我在网上搜索了2个小时,什么也找不到。

我试过machine.rtc,utime,time ..。

如果你有一个例子,我就是个讨厌鬼。

谢谢

ntptime.settime()

代码语言:javascript
复制
rtc = machine.RTC()

print("Time:%s" %str(rtc.datetime()))

很抱歉打扰你,但我从MicroPython下开始

EN

回答 2

Stack Overflow用户

发布于 2020-02-12 11:35:01

许多嵌入式端口,包括MicroPython,使用纪元时间2000年1月1日。这比1970年1月1日的UNIX纪元时间晚946,684,800秒。如果您首先使用NTP设置RTC,您将能够在几秒钟内读取MicroPython的纪元。这听起来像你在一个网络上,所以这应该很容易做到。假设您已经连接到WiFi,下面是如何设置实时时钟时间:

代码语言:javascript
复制
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时间后,您可以使用以下命令读取MycroPython纪元中的秒数:

代码语言:javascript
复制
import utime

utime.time()

我的结果是这个数字,634791870。它是整数秒。使用MicroPython时,此调用的精度不会超过秒。(您可以使用datetime()获取微秒,但这是日期时间格式,而不是时间戳格式。)

接下来,你需要做一些算术运算:

代码语言:javascript
复制
timestamp = 946684800 + utime.time()

这为您提供了Unix纪元的UTC时间戳(以整数秒为单位)。(MicroPython忽略时区。)要根据当地时间进行调整,您需要从0度经度每小时向东添加3600,然后减去向西的时间。

如果您的应用程序需要浮点格式,则只需添加0.0即可。

票数 1
EN

Stack Overflow用户

发布于 2019-07-25 18:41:43

直到现在,我对石墨一无所知,但我很快就在网上搜索到了Graphite documentation

timestamp是自unix纪元时间以来的秒数。如果timestamp设置为-1,那么Carbon-cache将使用到达时间。

在网上搜索unix epoch time后,我很快就找到了a Wikipedia page,它告诉我:

Unix时间(也称为POSIX时间或UNIX纪元时间)是...自协调世界时(UTC) 1970年1月1日星期四00:00:00起经过的秒数减去闰秒。

使用这些知识,您可以根据从RTC.now()获得的值来计算所需的时间戳-或者,您可以只使用值-1为数据添加到达服务器的时间戳。

This MicroPython forum thread有一些如何使用ntptime ( identical on ESP32 to ESP8266 version)的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57154794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档