如何从 Lua NodeMCU 中的日期和时间字符串创建日期对象?

How can I create Date Object from Date and Time Strings in Lua NodeMCU?

我正在 ESP8266 上玩 NodeMCU。我有一个来自 Web 请求的日期字符串和时间字符串,如下所示:

15.07.16(德语格式 DD.MM.YY)

19:50(24 小时格式)

这些DateTimes通常会稍微晚一点。我想从我上面的字符串中获取从当前时间到时间的分钟数。

我想我必须从字符串创建一个时间对象,然后将它与当前时间进行比较。但是我怎样才能用 Lua 做到这一点呢?

不幸的是,NodeMCU 上没有 os 库(或者我可能错过了如何启用它)。

手动计算差异将是一个巨大的痛苦,我想避免。有谁知道用可用库或外部库计算它的方法吗?

感谢大家的支持!

首先,您使用 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

有一个 pending PR for rtctime 正好相反,Unix 纪元到 UTC 日历。

如果您将字符串转换为 Unix 纪元 X,您可以这样做

-- delta in minutes
local delta = (X - rtctime.get()) / 60

您可以自己计算 X,由于闰年和秒以及其他 date/time 奇数,这远非微不足道,或者您可以向 http://www.convert-unix-time.com/api?date=15.07.2016%2019:50&timezone=Vienna&format=german 发送请求并提取它的时间戳。