Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Sapere se un orario è compreso tra un intervallo

    Ciao,

    ho questo problemino che vorrei sottoporvi

    Ho un orario (formato hh:ss) ad esempio 23:30 che chiameremo MIOORARIO

    Ho poi un intervallo di tempo (quindi due orari, inizio e fine)
    ad esempio
    inizio=7:30
    fine=22:00

    Devo riuscire a capire se MIOORARIO è compreso tra inizio e fine (gli altri due orari)...

    Come potrei fare?

    Grazie in anticipo
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  2. #2
    Ecco una funzione che fa al caso tuo: passi come argomento la stringa MIOORARIO e restituisce il booleano true se la fascia oraria è giusta, false se è sbagliata. Con 7:30 restituisce true, con 22:00 false (non hai specificato di preciso se alle 7:30 deve dare ok o no, stessa cosa per le 22:00, quindi non so se vada bene).

    Ciao
    Codice PHP:
    <?php
        
    function controllo_orario($stringa_ora){
            
    $time=explode(':',$stringa_ora);
            
    $hour=(int)$time[0];
            
    $minute=(int)$time[1];
            if(
    $hour>=&& $hour<22){
                if(
    $hour==7){
                    if(
    $minute<30){
                        
    $output=false;
                    }else{
                        
    $output=true;
                    }
                }else{
                    
    $output=true;
                }
            }else{
                
    $output=false;
            }
            return(
    $output);
        }
    ?>
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  3. #3
    codice:
    <?php 
        function controllo_orario($stringa_ora){ 
            $time=explode(':',$stringa_ora); 
            $hour=(int)$time[0]; 
            $minute=(int)$time[1]; 
            if($hour>=7 && $hour<22){ 
                if($hour==7){ 
                    if($minute<30){ 
                        $output=false; 
                    }else{ 
                        $output=true; 
                    } 
                }else{ 
                    $output=true; 
                } 
            }else{ 
                $output=false; 
            } 
            return($output); 
        } 
    ?>
    Ciao e grazie....
    se il MIOORARIO è compreso tra le 22:00 e le 7:00(del mattino) deve darmi KO
    quindi
    se il MIOORARIO è compreso tra le 7:00 e le 22:00 deve darmi OK

    ma la tua funzione non mi va, forse sbaglio a sostituire le variabili...
    aiutami!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  4. #4
    Strano, da me va... come si comporta di preciso?
    Comunque di do un esempio di come usarla:
    Codice PHP:
    <?php
        
    function controllo_orario($stringa_ora){
            
    $time=explode(':',$stringa_ora);
            
    $hour=(int)$time[0];
            
    $minute=(int)$time[1];
            if(
    $hour>=&& $hour<22){
                if(
    $hour==7){
                    if(
    $minute<30){
                        
    $output=false;
                    }else{
                        
    $output=true;
                    }
                }else{
                    
    $output=true;
                }
            }else{
                
    $output=false;
            }
            return(
    $output);
        }
        echo(
    '2:15 ');
        if(
    controllo_orario('2:15')){echo('Si');}
        else{echo(
    'No');}
        echo(
    '
    '
    );
        echo(
    '7:30 ');
        if(
    controllo_orario('7:30')){echo('Si');}
        else{echo(
    'No');}
    ?>
    Prova a copiare lo script ed eseguirlo così com'è.

    E poi: prima hai detto 7:30, adesso hai detto 7:00, qual'è quella giusta?

    Riguardo alla domanda che ti ho fatto prima: cosa vuoi che succeda se la tua ora è 7:00 o 22:00? Deve dare true o false?
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


  5. #5
    purtroppo il range è anch'esso variabile, quindi potrà essere

    che vada dall 6:00 alle 17:00
    oppure
    dalle 1:00 alle 4:30

    insomma Cambia! ho 2 variabili anche per inizio range e fine range!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  6. #6
    mi sono permesso di riscrivere la funzione iniziale, partendo dall'idea che è forse più semplice confrontare dei numeri interi fra loro, quindi "normalizziamo" gli orari in minuti e confrontiamoli.

    questo il mio esempio, provato in locale da me funziona, spero anche da voi

    codice:
    function controllo_orario ($starttime, $stoptime, $checktime)
      {	### diamo per buono che tutti gli orari rispettino il formato 0:00
    	# altrimenti controllare prima del submit in javascript please
    	$tmp = explode (':', $starttime);
    	# converto l'orario di inizio in minuti
    	$Start = intval ($tmp [0]) * 60 + intval ($tmp [1]);
    	# print 'Start = '.$Start.'
    '; # debug
    	unset ($tmp);
    	$tmp = explode (':', $stoptime);
    	# converto l'orario di fine in minuti
    	$Stop = intval ($tmp [0]) * 60 + intval ($tmp [1]);
    	unset ($tmp);
    	# se fine < inizio, c'è la mezzanotte, aggiungo quindi 24 ore
    	if ($Stop < $Start) { $Stop += 60 * 24; }
    	# print 'Stop = '.$Stop.'
    '; # debug
    	$tmp = explode (':', $checktime);
    	# converto l'orario da verificare in minuti
    	$toCheck = intval ($tmp [0]) * 60 + intval ($tmp [1]);
    	# se l'orario da verificare è < inizio, c'è la mezzanotte
    	# aggiungo quindi 24 ore anche qui, speriamo
    	if ($toCheck < $Start) { $toCheck += 60 * 24; }
    	# print 'toCheck = '.$toCheck.'
    '; # debug
    	if ($Start <= $toCheck)
    	  { if ($Stop >= $toCheck) { $esito = true; }
    			else { $esito = false; }
    	  } else { $esito = false; }
    	return $esito;
      }
    
    
    if ($_POST ['verifica'] == 'verifica')
     {	$esito = controllo_orario ($_POST ['starttime'], $_POST ['stoptime'], $_POST ['checktime']);
    	print 'Orario: '.$_POST ['checktime'].' ';
    	if ($esito == false) { print 'NON '; }
    	print 'compreso fra le '.$_POST ['starttime'].' e le '.$_POST ['stoptime']; }
    
    ?>
    <form action="" method="post">
    Start: <input type="text" name="starttime" value="09:00" />
    
    Stop: <input type="text" name="stoptime" value="19:00" />
    
    To be checked: <input type="text" name="checktime" value="<?= date ("H:i"); ?>" />
    
    <input type="hidden" name="verifica" value="verifica" />
    <input type="submit" value="Verifica" />
    </form>

  7. #7
    GRAZIE luca777

    la tua funzione FUNZIONA perfettamente!!!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  8. #8
    ... e un GRAZIE anche a furbostandby

    sei stato gentilissimo anche tu!
    "Quando si mangia il formaggio svizzero, che succede ai buchi?" (B. Brecht)

    Visitate il mio sito:
    www.clamorosalcibali.it

  9. #9
    E non potevi dirlo prima che l'orario era variabile?
    La differenza fra la genialità e la stupidità è che la genialità ha i suoi limiti.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.