我一直试图与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),但响应仍然相同。
有什么建议吗?谢谢!
发布于 2017-05-23 18:47:47
行为是正确的。如果您想使用时区,您需要所谓的tz数据库中的“区域文件”。每个tz文件包含(以及其他信息)转换,如夏时制,它还记录闰秒。
有一个如何处理NodeMCU存储库中的时区的例子。
tz = require('tz')
tz.setzone('eastern')
sntp.sync(nil, function(now)
local tm = rtctime.epoch2cal(now + tz.getoffset(now))
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end)因此,您需要tz.lua加上您感兴趣的时区(示例中的“东方”)的区域文件。
https://stackoverflow.com/questions/44122622
复制相似问题