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

String 如何从LuaNodeMCU中的日期和时间字符串创建日期对象?,string,time,lua,esp8266,nodemcu,String,Time,Lua,Esp8266,Nodemcu,我正在ESP8266上和NodeMCU玩。我有一个来自Web请求的日期字符串和时间字符串,如下所示: 15.07.16(德语格式DD.MM.YY) 19:50(24小时格式) 这些日期时间通常是在将来的某一点。我想获得从当前时间到上面字符串中的时间的分钟数 我想我必须从字符串中创建一个时间对象,然后将其与当前时间进行比较。但是我怎么能和Lua一起做呢 不幸的是,NodeMCU上没有os库(或者我可能错过了如何启用它) 手动计算差异将是一个巨大的痛苦,我希望避免。有人知道用可用库或外部库计算的方法

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

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

19:50(24小时格式)

这些日期时间通常是在将来的某一点。我想获得从当前时间到上面字符串中的时间的分钟数

我想我必须从字符串中创建一个时间对象,然后将其与当前时间进行比较。但是我怎么能和Lua一起做呢

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

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


谢谢你的支持

首先使用Lua的字符串库从字符串中获取数字:

然后使用Lua的操作系统库进行时间计算:

我不会给你更多的信息,因为你没有表现出自己解决问题的努力

插件:

由于您没有操作系统库(不知道),您可以自己简单地计算这些内容

使用string.sub或string模式从字符串中获取月、年、小时和分钟数

然后简单地计算时间差。你知道每个月有多少天。你知道每小时有多少分钟,每天有多少小时。 确定年份是否为闰年(如果您不知道如何:)

有一个与UTC日历正好相反的for,Unix历元

如果将字符串转换为Unix epoch X,则可以

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

您可以自己计算
X
,这可不是一件小事,因为闰年和闰秒以及其他日期/时间异常,或者您可以发送请求并从中提取时间戳。

www.google.com输入“lua time”。打开第一个结果。。。如果您想使用Lua,我强烈建议您至少阅读涵盖这两个主题的语言参考。它将回答许多即将到来的问题。谢谢你的快速回答。当然,我已经做到了。但是在我的ESP8266上没有操作系统,也没有操作系统。时间这个可以关闭吗?对不起,我应该说,我使用nodeMCU。固件上没有操作系统库。顺便说一句,没有必要否决我,因为你认为我没有显示出任何努力来解决我自己的问题。除了使用nodeMCU之外,我提供了所有需要的信息。你的回答很傲慢,对ESP上的人毫无帮助。你的问题不符合推荐的好问题。所以我投了反对票。就这么简单。读一读《小猪》,我不想卷入一场关于好/坏风格的激烈战争。因此,这是我对此事的唯一评论。除了缺少的
NodeMCU
关键字外,这个问题在我看来完全没问题。我希望新加入的人能得到更多的同情和友好的指导。@pigger谢谢你。我正在寻找一种计算方法。我不可能手动完成。谢谢你,马塞尔!这看起来很有希望。简单明了。我刚刚注意到,我的固件没有使用rtctime支持进行编译。所以我明天会试试,让你知道。想想固件中对
X
范围的浮点支持。我刚刚用rtctime支持定制了一个版本。你知道为什么rtctime.get()为我返回0,0吗?我发现了这个。。。。“当ESP8266启动时,实时时钟(RTC)未初始化。如果您的物联网项目需要在其生成的数据中提供时间戳,那么您的代码将需要在网络可用后从服务器获取当前日期时间。”因此RTC对我来说毫无用处。但是我能做的是发送一个x请求和一个currentTime请求(我在前面的一些http头中以字符串的形式得到),然后简单地减去时间戳。这将需要更多的http请求,但我看不到更好的方法。直接转到源代码,阅读rtctime模块的简介,了解其操作方式。它解释了如何将它与SNTP模块结合使用来同步时间。作为替代方案,您可以向受信任的服务器发送HTTP HEAD请求,并从响应头解析时间戳。Jason写了一篇很好的博客: