c++ - 如何在 Arduino-ESP8266 上从 C/C++ 中的字符串解析 time_t?
问题描述
我正在用 Arduino 编程的 ESP8266 Huzzah 微控制器上编写嵌入式程序,我用它来制作气象站。我正在从服务器获取一些 json 天气数据,我可以在其中解析出请求中的 Date 标头以了解当前时间(因为微控制器没有内部时钟),它采用这种格式
Mon, 31 Aug 2020 18:11:26 GMT
我希望控制器在每天 06:00 更新其预测(闪烁 LED 下雨),并获得下一个 12-24 小时的预测。天气预报 JSON 数据给出的预测格式为
2020-06-10T13:00:00Z
我如何将这些解析为time_t
以便我可以比较它们并计算何时更新我的预测?我查看了time.h
标准 C 库,但找不到解析器。
解决方案
如果你有strptime()
,那么考虑这个:
#include <stdio.h>
#include <time.h>
int main() {
struct tm tm = {0};
const char *ts1 = "Mon, 31 Aug 2020 18:11:26 GMT";
strptime(ts1, "%A, %d %B %Y %H:%M:%S GMT", &tm);
printf("%s = %ld\n", ts1, timegm(&tm));
const char *ts2 = "2020-06-10T13:00:00Z";
strptime(ts2, "%Y-%m-%dT%H%M%SZ", &tm);
printf("%s = %ld\n", ts2, timegm(&tm));
}
推荐阅读
- rxjs - 如何取消史诗以避免多个实例
- javascript - 在 promise 初始化后使用 await
- linux - 用户线程和内核线程是否与线程级库和内核级库有以下任何一种对应关系?
- amazon-web-services - Kubernetes Ingress-Controller 和 AWS API Gateway 客户端证书
- firebase - 如何在 Angular 6 应用程序中将 algolia 与实时数据库 firebase 集成。
- php - 返回 Post Slug
- sql - 合并加入未按记录的 Redshift 工作
- excel - 行中具有多个平均值的 Excel 数据透视表
- sql-server - 将 SQL Server 列中的 XML 转换为文本
- php - Symfony LockableTrait - 错误/超时后解锁