我在ESP8266上玩NodeMCU。我有一个日期字符串和来自Web请求的时间字符串,如下所示:
15.07.16 (德语格式DD.MM.YY)
19:50 (24小时格式)
这些日期时间通常会在未来稍微放置一些。我希望从上面的字符串中获取从当前时间到时间的分钟数。
我想我必须从字符串中创建一个时间对象,然后将其与当前时间进行比较。但是我怎么能用Lua做到这一点?
不幸的是NodeMCU上没有 os 库(或者我可能错过了如何启用它)。
手动计算差异将是一个巨大的痛苦,我想避免。有没有人知道用可用或外部库计算的方法?
感谢您的支持!
答案 0 :(得分:3)
pending PR rtctime除了与UTC日历相反的Unix时代之外,还有http://www.convert-unix-time.com/api?date=15.07.2016%2019:50&timezone=Vienna&format=german。
如果将字符串转换为Unix纪元X,则可以
-- delta in minutes
local delta = (X - rtctime.get()) / 60
你可以自己计算X
,由于闰年和闰年,这远非微不足道。秒和其他日期/时间奇怪,或者您可以向{{3}}发送请求并从中提取时间戳。
答案 1 :(得分:1)
首先,您使用Lua的字符串库从字符串中获取数字:
https://www.lua.org/pil/20.html
https://www.lua.org/manual/5.3/manual.html#6.4
然后使用Lua的os库进行时间计算:
https://www.lua.org/pil/22.1.html
https://www.lua.org/manual/5.3/manual.html#6.9
我不会向您提供更多信息,因为您没有表现出任何解决问题的努力。
附加组件:
由于你没有os库(不知道)你可以自己计算这些东西。
使用string.sub或字符串模式从字符串中获取月,年和小时数。
然后简单地计算时差。你知道每个月有多少天。你知道每小时多少分钟和每天多少小时。 确定年份是否为闰年(如果您不知道如何:https://support.microsoft.com/en-us/kb/214019)