Я пишу код хронометража для ESP32 на языке C. Я хочу отображать время в часовом поясе, определенном во время сборки. В документации ESP32 показано, как применить часовой пояс, но формат часового пояса должен быть в формате POSIX.1, например. для Сиднея, Австралия, это:
Я хотел бы иметь возможность указывать часовой пояс во время сборки в качестве имени базы данных IANA/Olson, например. Australia/Sydney и преобразуйте его в формат POSIX.1 для использования в коде. Система сборки ESP32 использует CMake и файл sdkconfig, поэтому это означает либо макрос, определенный через CMake, либо строку, вставленную в sdkconfig, например.
Код: Выделить всё
CONFIG_TIMEZONE=AEST-10AEDT,M10.1.0/2,M4.1.0/2
Есть ли таблица или база данных, в которой я мог бы это найти, или кроссплатформенная утилита, которая может выполнить преобразование? Инструментальная цепочка ESP IDF в значительной степени опирается на Python (2.7), поэтому даже что-то на Python может работать. Чем меньше сложностей с интеграцией этого в сборку, тем лучше. Я просто не могу найти ничего вроде автономных утилит или кроссплатформенных библиотек, которые можно было бы легко обернуть и вызвать из CMake.
(Я знаю, что формат POSIX.1 содержит меньше информации, чем данные IANA, и я был бы доволен просто выражением POSIX.1, которое дает текущее поведение относительно смещения UTC и летнего времени.)
Подробнее здесь:
https://stackoverflow.com/questions/615 ... to-posix-1