mi sto mentalmente incastrando nel trovare un modo per controllare un range di tempo, ovvero mi spiego.......... faccio un esempio:
sono le 23:00 vorrei eseguire un ciclo dalle 19:00 alle 06:00 del giorno dopo
int Tora; //varibile che contiene un numero intero relativo all' ora attuale ovvero 23
int Tmin = 19;
int Tmax = 6;
if (Tora >= Tmin && Tora <= Tmax) { esegui questo }
ovviamente non funziona perche se sono le 23 si verifica la prima condizione ma non la seconda
perche se Tora è 23 >= 19 quindi si verifica Tora >= Tmin ......ma il ciclo non parte perche la condizione Tora <= Tmax non è vera (Tora) 23 <= (Tmax) 6
I controlli temporali a cavallo del cambio del giorno sono difficili da gestire proprio perché cambiando giorno cambia il senso logico del confronto.
Ti consiglio l'uso del timestamp. Se ne è parlato molto, cerca sul forum. Ti riassumo brevemente: fissi un punto da cui calcolare il tempo (la cosiddetta "epoca") e poi trasformi tutti gli orari in numero di secondi dal quel punto. In questo modo il controllo si riduce ad un semplicissimo confronto fra 2 variabili:
tronicman:
sono le 23:00 vorrei eseguire un ciclo dalle 19:00 alle 06:00 del giorno dopo
if (Tora >= Tmin && Tora <= Tmax) { esegui questo }
ovviamente non funziona perche se sono le 23 si verifica la prima condizione ma non la seconda
Puoi fare come suggerito da @leo72, valido in molti più casi.
Per questo singolo caso: non ti può funzionare con solo due confronti.
Praticamente devi tenere conto di due periodi, dalle 19:00 alle 23:59 e poi dalle 00:00 alle 06:00
Quindi ti servono anche i minuti. Io consiglio una variabile in cui metti sia le ore che i minuti moltiplicando ore*100
Devi avere variabili con dentro un numero del genere: 2234 -> ovvero 22:34
Perciò se Tora contiene ore e minuti come suggerito:
if ( (Tora>=1900 && Tora<=2359) || (Tora>=0 && Tora<=600) ) { esegui questo }
Un pò quello suggerito da @leo72 ma senza coinvolgere le date del giorno.
Come correttamente indicato da Leo, quando ci sono da fare confronti che coinvolgono date/ore ... il sistema più semplice e sicuro è utilizzare il TimeStamp (Unix Time) senza stare a reinventare "l'acqua calda".
Grazie a tutti........ ora ci provo...... in effetti non mi era venuto in mente di dividere i controlli prima e dopo la mezzanotte...... mi sembrerebbe la soluzione piu facile