日付を文字列に変換する

Arduino:
日付を文字列に変換する

How to: (方法)

#include <Wire.h>
#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  Serial.begin(9600);
  if (! rtc.begin()) {
    Serial.println("RTC not found!");
    while (1);
  }
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, setting the time!");
    // Set the date and time here
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  char dateStr[20];
  snprintf(dateStr, sizeof(dateStr), "%04d/%02d/%02d %02d:%02d:%02d",
           now.year(), now.month(), now.day(),
           now.hour(), now.minute(), now.second());
  Serial.println(dateStr);
  delay(1000);
}

サンプル出力:2023/04/01 12:34:56

Deep Dive (深い潜水)

日付を文字列にすることは、エレクトロニクスの初期から存在している。選択肢は幾つかある。strftimeのような標準関数もあるけど、Arduinoではsnprintfがメモリ使用量を抑えられるので便利。実装の詳細は、DateTimeライブラリが内部でどのように現在の日付を管理・提供しているかに依存する。

See Also (関連情報)