ESP8266 ISO 8601 string to tm struct
У меня есть веб-сервис, который возвращает временные метки в формате ISO 8601, например, "2021-06-25T12:00:00".
Я пытаюсь превратить строку метки времени в структуру типа tm из библиотеки ESP8266 <time.h><time.h>
, чтобы выполнить вычисления времени с помощью функции difftime ()
.
Я имел в виду функции времени Redhat https://sourceware.org/newlib/libc.html#time, поскольку он, по-видимому, совместим с библиотекой ESP, хотя все, что я могу найти, - это функции, преобразующие структуры tm в строки временных меток. Существуют ли какие-либо функции для преобразования строковой временной метки в структуру tm, а затем обратно в эпоху? Или как лучше всего подойти к такому преобразованию на платформе ESP8266?
@Boyfinn, 👍1
Обсуждение1 ответ
Лучший ответ:
Попробуйте strptime
из time.h
.
void setup()
{
struct tm tm = {0};
char buf[100];
// Преобразовать в tm struct
strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
// Может конвертировать в любой другой формат
strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
Serial.printf("%s", buf);
}
void loop()
{
yield();
}
Спасибо. Описанный выше метод работает. Вместо этого я просто отформатировал свою строку как"%Y-%m-%dT%H:%M:%S""., @Boyfinn
- ESP8266: ошибка: 'getLocalTime' was not declared in this scope
- Передача функции-члена класса в качестве аргумента
- контент» не захватывается
- esp32 Stack canary watchpoint срабатывает
- Преобразование byte* в int в Arduino
- Как передать нестатический член класса в обратный вызов?
- Что является более быстрой альтернативой parseInt()?
- Как разобрать 20180810T143000Z в time_t
Это ответ на ваш вопрос? Как проанализировать 20180810T143000Z по времени\_t, @Juraj
Спасибо! Этот метод тоже работает, хотя я нахожу ответ ниже более полезным., @Boyfinn
извините, да, есть другой формат. strptime не может анализировать метку времени без разделителей., @Juraj