DS1307 Формат времени

Тема в разделе "Arduino & Shields", создана пользователем Alexey Zhigalo, 23 июл 2016.

  1. Доброго времени суток!

    Столкнулся с проблемой, что при выводе времени, формат не тот что хотелось бы.

    Библиотека #include "RTClib.h"

    Выводит "23.7.2016 17:22:57", что не соответствует формату "dd.mm.YYYY hh:mm:ss"

    Понятно, можно городить, проверять на количество символов и добавлять на перед '0', но это как то......

    Есть ли готовая функция для форматирования времени ?

    Пример кода.

    Код (C++):
    #include "RTClib.h"

    void setup()
    {
    Serial.begin(SerialBod);

    }

    void loop()
    {
      Serial.println((String)now.day() + "." + (String)now.month() + "." +  (String)now.year() + " " + (String)now.hour() + ":" + (String)now.minute() + ":" + (String)now.second());
    }
     
  2. FlameWind

    FlameWind Нерд

    Из примера для DS1307:
    Код (C++):
    if (RTC.read(tm)) {
        Serial.print(tmYearToCalendar(tm.Year));
        Serial.write('/');
        Serial.print(tm.Month);
        Serial.write('/');
        Serial.print(tm.Day);
        Serial.print(" - ");
        print2digits(tm.Hour);
        Serial.write(':');
        print2digits(tm.Minute);
        Serial.write(':');
        print2digits(tm.Second);  
        Serial.println();
    }

    void print2digits(int number) {
      if (number >= 0 && number < 10) {
        Serial.write('0');
      }
      Serial.print(number);
    }
     
     
  3. Вот я и говорю, что заново велосипед изобретать.
     
  4. fogary

    fogary Гик

    Может функцию sprintf() попробовать?
     
    Tomasina нравится это.
  5. Да, разобрался.
    Код (C++):
     sprintf (date_time, "%02i.%02i.%04i %02i:%02i:%02i",dt_now.day(), dt_now.month(), dt_now.year(), dt_now.hour(), dt_now.minute(), dt_now.second());
     
    Tomasina и obuhanoe нравится это.