Время с эпохи в библиотеке c ++, используемой esp32 - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать библиотеку в c++ для использования в esp32 и, возможно, для использования в Linux или Windows.

Сейчас у меня есть фрагмент кода, который получает времяначиная с эпохи в миллисекундах, это 1 января 1970 года. Это прекрасно работает в Linux. Хотя, когда esp32 запускает этот код, он возвращает время с момента запуска программы. Вероятно, источником моей проблемы является то, что используемая мной библиотека chrono использует метод millis(), который в случае arduino возвращает время с момента запуска программы.

milliseconds ms = duration_cast< milliseconds >(
    system_clock::now().time_since_epoch()
);

Мой вопрос: есть ли способ получить правильное время с эпохи в c++ коде, который работает на всех платформах?

1 Ответ

0 голосов
/ 29 октября 2019

Мне удалось исправить это с помощью макроса:

#if defined(ESP32) 
const char* ntpServer = "pool.ntp.org"; 
const long gmtOffset_sec = 0; 
const int daylightOffset_sec = 3600; 
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); 
#endif

Таким образом, esp32 может получать время от ntpServer вместо того, чтобы получать время с момента запуска программы.

...