ESP32 获取时间戳的相关函数是 `sntp_get_time`,而不是 `sntp_get_current_timestamp`。首先,确保你已经正确地初始化了 SNTP 库。以下是一个简单的示例,演示如何在 ESP32 上使用 SNTP 获取当前时间戳:
1. 首先,在 `CMakeLists.txt` 或 `platformio.ini` 文件中添加 SNTP 库:
```
# CMakeLists.txt
set(COMPONENT_REQUIRES esp32)
set(COMPONENT_PRIV_REQUIRES lwip)
set(COMPONENT_SRCDIRS .)
set(COMPONENT_ADD_INCLUDEDIRS include)
# platformio.ini
lib_deps =
ArduinoJson
SNTP
```
2. 接下来,在代码中初始化 SNTP 并获取当前时间戳:
```cpp
#include
#include
#include
const char *ssid = "your_SSID";
const char *password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// 等待 WiFi 连接
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 初始化 SNTP
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, "pool.ntp.org");
sntp_init();
// 获取当前时间戳
time_t now = 0;
struct tm timeinfo = { 0 };
while (now < 86409200) { // 86409200 代表 1997 年 1 月 1 日的时间戳
Serial.println(".");
delay(500);
time_t now = sntp_get_current_timestamp();
}
// 将时间戳转换为 struct tm
gmtime_r(&now, &timeinfo);
Serial.println("Current time:");
Serial.print("Year: ");
Serial.println(1900 + timeinfo.tm_year);
Serial.print("Month: ");
Serial.println(1 + timeinfo.tm_mon);
Serial.print("Day: ");
Serial.println(timeinfo.tm_mday);
Serial.print("Hour: ");
Serial.println(timeinfo.tm_hour);
Serial.print("Minute: ");
Serial.println(timeinfo.tm_min);
Serial.print("Second: ");
Serial.println(timeinfo.tm_sec);
}
void loop() {
// 这里可以添加其他代码
}
```
这个示例首先连接到 WiFi,然后初始化 SNTP 并获取当前时间戳。最后,将时间戳转换为 `struct tm` 格式并打印出来。请注意,你需要将 `ssid` 和 `password` 替换为你的 WiFi 网络信息。
ESP32 获取时间戳的相关函数是 `sntp_get_time`,而不是 `sntp_get_current_timestamp`。首先,确保你已经正确地初始化了 SNTP 库。以下是一个简单的示例,演示如何在 ESP32 上使用 SNTP 获取当前时间戳:
1. 首先,在 `CMakeLists.txt` 或 `platformio.ini` 文件中添加 SNTP 库:
```
# CMakeLists.txt
set(COMPONENT_REQUIRES esp32)
set(COMPONENT_PRIV_REQUIRES lwip)
set(COMPONENT_SRCDIRS .)
set(COMPONENT_ADD_INCLUDEDIRS include)
# platformio.ini
lib_deps =
ArduinoJson
SNTP
```
2. 接下来,在代码中初始化 SNTP 并获取当前时间戳:
```cpp
#include
#include
#include
const char *ssid = "your_SSID";
const char *password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
// 等待 WiFi 连接
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 初始化 SNTP
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_setservername(0, "pool.ntp.org");
sntp_init();
// 获取当前时间戳
time_t now = 0;
struct tm timeinfo = { 0 };
while (now < 86409200) { // 86409200 代表 1997 年 1 月 1 日的时间戳
Serial.println(".");
delay(500);
time_t now = sntp_get_current_timestamp();
}
// 将时间戳转换为 struct tm
gmtime_r(&now, &timeinfo);
Serial.println("Current time:");
Serial.print("Year: ");
Serial.println(1900 + timeinfo.tm_year);
Serial.print("Month: ");
Serial.println(1 + timeinfo.tm_mon);
Serial.print("Day: ");
Serial.println(timeinfo.tm_mday);
Serial.print("Hour: ");
Serial.println(timeinfo.tm_hour);
Serial.print("Minute: ");
Serial.println(timeinfo.tm_min);
Serial.print("Second: ");
Serial.println(timeinfo.tm_sec);
}
void loop() {
// 这里可以添加其他代码
}
```
这个示例首先连接到 WiFi,然后初始化 SNTP 并获取当前时间戳。最后,将时间戳转换为 `struct tm` 格式并打印出来。请注意,你需要将 `ssid` 和 `password` 替换为你的 WiFi 网络信息。
举报