Как получить текущую дату
Как получить текущую дату, месяц и год. Я использовал RTC, NTPClient, но это не сработало. Это дает вывод по умолчанию 1970 года. Что я могу сделать, чтобы исправить это.
time_t now = time(nullptr);
struct tm* newtime = localtime(&now);
String tmpNow = "";
tmpNow += String(newtime->tm_year + 1900);
tmpNow += "-";
tmpNow += String(newtime->tm_mon + 1);
tmpNow += "-";
tmpNow += String(newtime->tm_mday);
tmpNow += " ";
@Shivani Dongre, 👍0
Обсуждение1 ответ
пример использования NTPClient доступен в проектах. гитхаб
#include <NTPClient.h>
// меняем следующую строку для использования с другой платой/щитом
#include <ESP8266WiFi.h>
//#включить <WiFi.h> // для экрана WiFi
//#включить <WiFi101.h> // для шилда WiFi 101 или MKR1000
#include <WiFiUdp.h>
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
}
void loop() {
timeClient.update();
Serial.println(timeClient.getFormattedTime());
delay(1000);
}
Из того, что я обнаружил, TimeRTC требует внешнего устройства DS1307RTC для отслеживания времени, как показано в видео здесь и с его помощью мы должны получить реальное время, как показано в примере
#include <TimeLib.h>
#include <Wire.h>
#include <DS1307RTC.h> // базовая библиотека DS1307, которая возвращает время как time_t
void setup() {
Serial.begin(9600);
while (!Serial) ; // ждем, пока откроется последовательный монитор Arduino
setSyncProvider(RTC.get); // функция для получения времени из RTC
if(timeStatus()!= timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
}
void loop()
{
if (timeStatus() == timeSet) {
digitalClockDisplay();
} else {
Serial.println("The time has not been set. Please run the Time");
Serial.println("TimeRTCSet example, or DS1307RTC SetTime example.");
Serial.println();
delay(4000);
}
delay(1000);
}
void digitalClockDisplay(){
// цифровые часы отображающие время
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
}
void printDigits(int digits){
// служебная функция для отображения цифровых часов: печатает предшествующее двоеточие и начальный 0
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
Если, насколько я понимаю из вашего кода, вы на самом деле не используете ни RTP, ни NTP. Вы только создаете объект Time без значений и читаете его значения по умолчанию.
Посмотрите еще несколько примеров здесь
используя RTC, он выдает результат, например -jan 8 2013 . Как получить текущую дату и год, @Shivani Dongre
@ShivaniDongre Вы на 100% уверены, что DS1307RTC имеет правильную настройку даты? Обновление даты зависит от батареи. Если в какой-то момент батарея была удалена, дата сбрасывается до значения по умолчанию, а затем вставка новой батареи заставляет считать время с первого января., @Filip Franik
- Как определить размер Flash?
- В ESP-12E NodeMCU, какой выход PIN A0?
- Преобразование byte* в int в Arduino
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- NodeMCU поддерживает внедрение ключей?
- Датчик движения PIR (HC-SR501) ложные результаты с NodeMCU
- NodeMCU второй HARDWARE последовательный TX в качестве порта отладки
Я не думаю, что Arduino знает, какая сейчас дата. Чтобы использовать NTPClient, вам нужно каким-то образом подключить Arduino к Интернету, чтобы дату можно было загрузить с NTPServer., @Filip Franik
Он уже подключен к интернету, @Shivani Dongre
Тогда у вас, вероятно, где-то есть ошибка. Разместите свой код здесь, чтобы мы могли проверить, что не так. Используйте кнопку «код», чтобы отформатировать его в читаемом виде., @Filip Franik
Из какой библиотеки вы получаете функцию «localtime»? Я не могу найти его ни в одной из библиотек, на которые вы ссылались выше., @Filip Franik