ESP32获取当前时间
如果在ESP32中获取当前时间?
/*
主程序文件
包含了连接WiFi和获取NTP时间的功能示例
*/
// 包含必要的头文件
#include <Arduino.h>
#include <WiFi.h>
#include <time.h>
// WiFi配置参数
const char *ssid = "WIFI名称"; // WiFi SSID
const char *password = "WIFI密码"; // WiFi密码
int retryCount = 0; // WiFi连接重试计数
// NTP配置参数, 使用阿里云的NTP服务器
const char *ntpServer = "ntp1.aliyun.com";
const long gmtOffset_sec = 8 * 3600; // 时区偏移量,北京是GMT+8
const int daylightOffset_sec = 0; // 夏令时偏移量,中国无夏令时
//打印本地时间
void printLocalTime()
{
struct tm timeinfo;
if (!getLocalTime(&timeinfo))
{
Serial.println("获取时间失败");
return;
}
// 格式化并打印时间
Serial.println(&timeinfo, "%F %T"); // "%F %T" // %A, %B %d %Y %H:%M:%S
}
void setup()
{
// 连接WiFi
WiFi.begin(ssid, password);
// 初始化串口通信
Serial.begin(115200);
// 循环等待WiFi连接成功
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi..");
retryCount++;
if (retryCount >= 10)
{
break; // 最多重试10次
}
}
// 打印连接成功信息及IP地址
Serial.println("Connected to the WiFi network");
Serial.println("IP address:");
Serial.println(WiFi.localIP());
// 配置NTP服务器,开始同步时间
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
}
void loop()
{
printLocalTime(); // 打印当前本地时间
delay(1000); // 每秒更新一次时间
}