Arduino ESP32 日期和时间来自 configTime &timeinfo。我如何将其放入变量中?

问题描述 投票:0回答:1

我有一个 ESP32,我想用它从传感器捕获一些数据,我将把数据存储在云端,以便在其他地方查询。我正在使用 Arduino IDE。

我想要捕获的数据项之一是读取读数的日期和时间。 我发现实现这一点相当容易,并且网络上的许多地方都有执行此操作的示例(都非常相似)。

我在代码中使用以下内容:

...

// DateTime processing
const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 0;
const int   daylightOffset_sec = 3600;

String dateL = "Null";

void getLocalDateTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  dateL = (&timeinfo, "%Y%m%d %H:%M:%S");
  Serial.println(dateL);
  Serial.println(&timeinfo, "%Y%m%d %H:%M:%S");
}

void setup(){
...
}


void loop(){
  ...
  getLocalDateTime();
 ...
}

我得到的输出如下

%Y%m%d %H:%M:%S
20240504 11:23:30

...只是与此处不相关的其他代码。

这只是实验代码,我试图将日期和时间放入我的 dateL 变量中,以便我可以在将其写入云时将其添加到我的数据中。

我发现的每个示例都使用相同的语法,并且只是用 println 编写它,我找不到存储它的示例。由于这必须是要打印的字符串(??),所以我很难理解为什么这不起作用。它可以很好地打印日期时间,但如果我使用相同的语法将其放入数据项中,它只是存储我正在使用的日期和时间的掩码语法。

我是 Arduino / C++ 的新手,所以要温柔。

c++ datetime arduino-esp32
1个回答
0
投票

感谢您的评论。我想我已经找到解决方案了。

将我的原始日期L定义为char:

    char dateL[80];

然后在 getLocalDateTime 中使用以下代码代替:

void getLocalDateTime(){

  time_t rawtime; 
  struct tm* timeinfo; 
  time(&rawtime); 

  timeinfo = localtime(&rawtime); 
  //char buffer[80];

  strftime(dateL, 80, "%Y%m%d %H:%M:%S",timeinfo); 
}

现在每当我调用它时都会更新 dateL 的值。

© www.soinside.com 2019 - 2024. All rights reserved.