如何从 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 发送请求并提取它的时间戳。
我正在 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 发送请求并提取它的时间戳。