Bonjour
Je suis parvenu a convertir un temps Unix en H:M:S
Malheureusement l heure récupéré et en utc , quel approche faut il avoir pour le transformer en gmt ?
l'Ideal serait de la convertir avant la conversion H:M:S , mais je ne comprend pas bien ce que je doit faire
Pour le moment j ai ajouté 7200 seconds
J'utilise la Library TimeLib.h pour récupérer l heure sur internet , si cela peux m aider
Merci pour votre patience
GMT c'est Greenwich Mean Time. Je pense que tu veux plutôt parler de l'heure locale française ?
Tu n'utilises pas NTP ?
Parce qu'avec NTP c'est plus simple :
// en global :
const char* ntpServer = "pool.ntp.org";
// dans setup() :
configTzTime("CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00", ntpServer);
Jusque là nous avons simplement configuré la timezone avec les changements d'heure été hiver.
Ce qui m'étonne est que tu récupères l'heure avec une String : String sunrise = jsonBuffer["sys"]["sunrise"];
Alors qu'à mon avis ceci doit être possible : time_t sunrise = jsonBuffer["sys"]["sunrise"];
Dans pTime tu peux récupérer les variables séparément :
struct tm {
int tm_sec; /* Seconds. [0-60] 1 leap second */
int tm_min; /* Minutes. [0-59] */
int tm_hour; /* Hours. [0-23] */
int tm_mday; /* Day. [1-31] */
int tm_mon; /* Month. [0-11] */
int tm_year; /* Year - 1900. */
int tm_wday; /* Day of week. [0-6] */
int tm_yday; /* Days in year.[0-365] */
int tm_isdst; /* DST. [-1/0/1] */
};
pTime est un pointeur sur une structure tm, donc on accède aux différents membres avec :
pTime->tm_sec pour les secondes
etc ...
La meilleur solution est celle proposé par @hbachetti et qui est utilisé par la plupart d'entre nous.
Il est aussi possible que ta librairie propose une fonction pour définir la time zone ou le décalage avec le GMT.
Le problème est aussi que tu ne donne pas le nom de ta librairie, enfin surtout son auteur, car il y a plusieurs librairie Time.
C'est celle de PaulStoffregen?
Sur ESP32 Serial.printf() est disponible. Serial.printf("voici la concatenation = %02d:%02d", time->tm_hour, time->tm_min);
Cela évite toutes ces conversions inutiles en String, et l'affichage aura le format HH:MM, avec donc deux chiffres.
Merci pour cette information fort utilise , cela peut il être également appliqué a la variable Sunrise ?
Car je suis confronte au probleme suivant :
si les minute sont inferieur exemple 8:05 , lorsque je print ma variable dans mon canvas j ai ceci 8:5
Merci
Je ne vois pas pourquoi cela serait applicable à Sunset et pas applicable à Sunrise.
Attention : la méthode printf() existe sur ESP8266, ESP32, pas sur AVR.