Как сравнить время полученное из Интернета?
- Войдите на сайт для отправки комментариев
Чт, 26/11/2020 - 17:28
Всем привет! У меня есть программа которая получает время из Интернета (для этого она подключается к указанной в коде точке доступа). Кто-то знает как определить, что время полученное из Интернета больше, например, 12 часов и 30 минут, но при этом меньше чем, например, 15 часов и 45 минут? Буду рад идеям, которые вы мне предложите ;-) PS: эта программа полноценно работает на плате ESP8266.
#include <ESP8266WiFi.h>
#include <time.h>
const char *ssid_name = "****";
const char *ssid_password = "********";
long timezone = 2; // указываем часовой пояс
byte daysavetime = 1; // указываем летнее время
int timing;
WiFiClient wifi_client;
void setup() {
Serial.begin(115200);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Подключаемся к WiFi точке: ");
Serial.println(ssid_name);
WiFi.begin(ssid_name, ssid_password);
if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("Подключились к WiFi!");
Serial.print("Локальный IP: ");
Serial.println(WiFi.localIP());
configTime(3600*timezone, daysavetime, "pool.ntp.org", "time.nist.gov");
Serial.println("Получаем время из Интернета ...");
while(!time(nullptr)){
Serial.print("*");
delay(1000);
}
Serial.println("Время отклика ... OK");
}
time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);
if (millis() - timing > 1000) {
timing = millis();
Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.println(p_tm->tm_sec);
}
}
А вы умеете сравнить, скажем, переменную Х - что она больше 12, но меньше 15 ? Если да, то что мешает проделать это с часами? А потом ровно то же самое - с минутами?
Какие часы? какие минуты? Про unixtime что-нибудь слышали?
Только что узнал) И как же использовать unixtime?
Только что узнал) И как же использовать unixtime?
Так, как Вам нужно.
Спасибо, за подсказку! Уже разобрался с UNIX Time
Спасибо, за подсказку! Уже разобрался с UNIX Time
Юникстайм - это правильно, но все-таки как сравнить часы с 12 и 15 - так в голову и не пришло?
Сложность в том, что нужно сравнивать не только часы, но и минуты, а просто сравнить их не получится
Сложность в том, что нужно сравнивать не только часы, но и минуты, а просто сравнить их не получится
Желательно и самому мочь придумать как сравнивать (Часы*60 + минуты) .
Сравнивайте ваше время ( Часы*100 + минуты) с 1230 и 1545.
И неважно что у вас никогда не будет значений типа 1860, 1861.....
Неравенству это будет всё равно....
Вот только как вы будете через полночь переходить....
Сложность в том, что нужно сравнивать не только часы, но и минуты, а просто сравнить их не получится
ну я и говорю - "не осилил" :)
Юникстайм - это правильно, но все-таки как сравнить часы с 12 и 15 - так в голову и не пришло?
Перевести в юникстайм и уже юникстайм сравнивать между собой.
Сложность в том, что нужно сравнивать не только часы, но и минуты, а просто сравнить их не получится
Желательно и самому мочь придумать как сравнивать (Часы*60 + минуты) .
И что раньше, 23:59 или 00:01?
Сложность в том, что нужно сравнивать не только часы, но и минуты, а просто сравнить их не получится
Желательно и самому мочь придумать как сравнивать (Часы*60 + минуты) .
И что раньше, 23:59 или 00:01?
Месяц*1000000+Дата*10000+ Часы*100 + минуты
Что раньше, 01:01 1 января 2010 года или 01:01 2 января 2000 года?
Сравнение имеет смысл только при ПОЛНОМ задании всех составляющих (по крайней мере, всех "старших" до обнаружения различия). И в этом случае уже возникает вопрос об используемой разрядности. Юникстайм обеспечивает достаточно компактное представление. И, одновременно, кроме качественного результата (раньше/позже) позволяет получить количественный (на сколько дней/часов/минут).
Что раньше, 01:01 1 января 2010 года или 01:01 2 января 2000 года?
Как трудно жить среди занудов...
Сказал трехлетний Михаил.
Среди зануд! - поправил Павел
Тридцатилетний и в очках.
Ну да, как можно еще назвать человека, указывающего на ошибки?
Только занудой.