【发布时间】:2017-05-24 02:47:47
【问题描述】:
我一直在尝试与ntp服务器同步时间,但是nodemcu似乎忽略了服务器参数。
-- sync.lua
sntp.sync("fr.pool.ntp.org", function()
tm = rtctime.epoch2cal(rtctime.get())
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end)
执行..
> dofile('sync.lua')
> 2017/05/22 21:38:39
时间响应是 unix 纪元时间 (https://www.epochconverter.com/)。它应该是服务器参数时间(在这种情况下是法国)吗?我尝试了几个不同的服务器(即http://www.pool.ntp.org/zone/europe),但响应仍然相同。
有什么建议吗?谢谢!
【问题讨论】:
-
不,纪元时间是 UTC。您必须对结果应用时区才能获得当地时间。我不确定您的环境中有什么可以为您做到这一点,但法国比 UTC 早 2 小时。
-
@ktb so...如果它总是返回UTC时间,为什么允许ntp服务器作为参数?
-
您确实希望您的时间修正准确,对吧?好吧,如果你住在法国,你想要一个法国服务器,而不是日本服务器来告诉你时间。离你住的地方有点远。
-
@ktb 我想获取作为参数传递的 sntp 服务器的时间。我想知道如果我使用 sntp 法国服务器,我会得到法国时间。然而,这并没有发生。它总是返回 unix 时间。问题是:这对吗?
-
没错。无论您从哪里获得时间,它始终是 UTC。