Arduino:
Преобразование даты в строку
Как это сделать:
Вот простой пример преобразования даты в строку на Arduino:
#include <RTClib.h>
RTC_DS3231 rtc;
void setup() {
Serial.begin(9600);
if (!rtc.begin()) {
Serial.println("Не удалось найти RTC");
while (1);
}
DateTime now = rtc.now();
char dateString[11]; // Достаточно места для "DD/MM/YYYY"
sprintf(dateString, "%02d/%02d/%04d", now.day(), now.month(), now.year());
Serial.println(dateString);
}
void loop() {
// Повторное преобразование не требуется.
}
Пример вывода:
23/03/2023
Подробнее
Исторически представление времени было сложным аспектом программирования из-за разных форматов и часовых поясов. Времязависимые функции Arduino берут на себя сложность, позволяя нам сосредоточиться на понимании временных данных.
Хотя мы использовали библиотеку RTClib
, альтернативы, такие как TimeLib.h
, предлагают аналогичные функции. Выбор зависит от предпочтений и конкретных особенностей, например, встроенной обработки часовых поясов.
Ключевая функция sprintf
, использованная здесь, форматирует данные в строку. Она основана на стандартной функции библиотеки C, которая является надежной, но может быть ресурсоемкой для сложного использования. Более легкой и базовой альтернативой была бы snprintf
, которая обеспечивает соблюдение размера буфера и безопасность против переполнения буфера.
Смотрите также
- Библиотека времени Arduino: http://playground.arduino.cc/Code/Time
- DateFormat: https://www.arduino.cc/reference/en/libraries/date-format/
- Документация RTClib: https://github.com/adafruit/RTClib