Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: date()

  1. #1

    date()

    ciao
    ho un form in cui vengono inseriti l' ora d' ingresso e l' ora d' uscita di un lavoratore.
    io devo scrivere un codice che in base a questi dati mi calcoli il totale delle ore e minuti di lavoro giornalieri e settimanali.
    mi potete consigliare quali funzioni di Data e Ora devo usare per elaborare i dati ricevuti dal form???
    grazie

  2. #2
    il sistema più comodo per fare calcoli con delle date é utilizzare il timestamp

    Il timestamp é un numero che rappresenta il numero di secondi trascorsi dal 1 gennaio 1970

    Se tu hai due date e vuoi sapere ad esempio quante ore sono trascorse, é un po' difficile fare questo calcolo.
    Invece se trasformi le due date in timestamp, non hai che da fare una sottrazione, in secondi, e poi ritrasformi.

    time() Ti stampa il timestamp attuale.
    Per ottenere il timestamp di un momento preciso si usa

    mktime(ora,minuto,secondo,mese,giorno,anno)

    Se non é abbastanza chiaro ti rimando alla guida di php - dunzioni di data e ora.

    Se non ti é ancora chiaro chiedi

  3. #3
    non fa submit...sicuramente quello che ho fatto e un ragionamento molto stupido
    vi posto il codice
    il form:
    <html>
    <head>
    <title>ore di lavoro</title>
    </head>
    <body>
    <form action="ore_lavoro.php" method="post">
    </form>
    <table border ="0">
    <tr><td>inserisci l' ora d' ingresso(hh:mm)
    <td><input type ="text" name ="hi" size="2" maxlentht="2">
    :
    <td><input type ="text" name ="mi" size="2" maxlenght="2">
    <tr><td>inserisci l'ora d' uscita (hh:mm)
    <td><input type ="text" name ="hu" size="2" maxlenght="2">
    :
    <td><input type ="text" name ="mu" size="2" maxlenght="2">
    <tr><td colspan="2"><center><input type ="submit" name ="submit" value ="invia orario">
    </center></table></form>
    </body>
    </html>


    e poi il codice php che elabora i dati inviati
    Codice PHP:
    <?php
    if ((isset($_POST['hi'])) && (isset($_POST['mi'])) && (isset($_POST['hu'])) && (isset($_POST['mu'])))
    {
       
    $hi =$_POST['hi'];    //hi:mi-->ora ingresso
        
    $mi =$_POST['mi'];
        
    $hu =$_POST['hu']; //hu:mu-->ora uscita
        
    $mu =$_POST['mu'];
      
    $o1 =mktime($hi$midate("w"), date("m"), date("y"));
      
    $o2 =mktime($hu$mudate("w"), date("m"), date("y"));
      
    $ore =($o1 $o2);
      echo 
    "oggi hai lavorato: ".$ore." ore";
    }

     else  if (isset(
    $_POST['submit']))
             {echo 
    "non hai inserito le ore";}

    ?>
    avete qualche idea che puo far funzionare il codice ?
    e poi..
    nn riesco capire come fare per stampare le ore settimanali

    grazie

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    codice:
    mktime($hi, $mi, date("w"), date("m"), date("y"));
    questo pezzo è sbagliato, mktime prende "ore, minuti, secondi, mese, giorno, anno"

    Quindi hai dimenticato i secondi e messo "w" che è il giorno della settimana da 0 a 6 (0 per domenica fino a 6 per sabato).

    Se volessi solo fare una differenza, potresti passare anche soltanto 0 per giorno mese anno, perchè tanto i secondi di differenza non cambierebbero.

  5. #5
    allora
    l' ho modificato :
    Codice PHP:
    $o1 =mktime($hi$mi00,0,0);
    $o2 =mktime($hu$mu00,0,0);
      
    $ore =($o1 $o2)/(60*60*24);
      echo 
    "oggi hai lavorato: ".$ore." ore"
    (nn so se va bene)
    quello che nn riesco apire è perche il form in html nn fa submit
    qualche idea?
    grazie

  6. #6
    Non ti invia il form perchè lo chiudi subito dopo averlo dichiarato

    <form action="ore_lavoro.php" method="post">
    </form>

    Devi togliere </form>

  7. #7
    Originariamente inviato da mtx_maurizio
    Non ti invia il form perchè lo chiudi subito dopo averlo dichiarato

    <form action="ore_lavoro.php" method="post">
    </form>

    Devi togliere </form>
    Hai ragione. Che sbadata!

    Comunque, devo aver sbagliato le operazioni aritmetiche(credo):
    $ore =$o2 - $o1 -->???????
    perche se inserisco ingresso alle12:30 e uscita alee 15:30 mi stampa :
    oggi hai lavorato: 10800 ore
    Come devo scrivere l' operazione per fare la diferenza delle ore?
    Grazie
    :master:

  8. #8
    o2 - o1

    però poi diviso 60*60 (togli il *24 altrimenti calcoli i giorni!)

    Poi protresti affinare ulteriormente nel senso che il risultato potrebbe essere 5,25 ore (che non è bello

    Se moltiplichi invece il decimale per 60 ottieni i minuti

    in questo caso 0.25 * 60 = 15 minuti

  9. #9
    Prima di tutto, grazie!
    allora..
    Codice PHP:
    $ore =(($o2 $o1) / (60*60)); 
    fin qui ho capito . E poi?
    Mi spieghi esattamente come scrivo il codice per fare l' operazione sui minuti?
    scosa l' ignoranza ma sono una principiante

    poi mettiamo che al inizio della pagina voglio inserire data, giorno della sett. e ora
    con
    Codice PHP:
    echo strftime'%Hh %M %A %d %b'time() ); 
    mi stampa 13h 24 Friday 01 Feb
    come facio a stmparla in italiano?

    grazie ancora!

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da fiorelina21
    Prima di tutto, grazie!
    allora..
    Codice PHP:
    $ore =(($o2 $o1) / (60*60)); 
    fin qui ho capito . E poi?
    Mi spieghi esattamente come scrivo il codice per fare l' operazione sui minuti?
    scosa l' ignoranza ma sono una principiante

    poi mettiamo che al inizio della pagina voglio inserire data, giorno della sett. e ora
    con
    Codice PHP:
    echo strftime'%Hh %M %A %d %b'time() ); 
    mi stampa 13h 24 Friday 01 Feb
    come facio a stmparla in italiano?

    grazie ancora!

    codice:
    $deltat = $o2 - $o1;
    $ore = intval($deltat/360);
    $minuti = '00';
    $scarto = $deltat%360;
    if($scarto) {
      $minuti = $scarto/60;
      if($minuti < 10) {
        $minuti = '0'.$minuti;
      }
    }
    
    echo "hai lavorato ".$ore." ore e ".$minuti." minuti";

    per la data in italiano, a seconda del tipo di server dove ti trovi (se windows o linux) devi passare la corretta stringa alla funzione set_locale, che dovrai lanciare prima dell'utilizzo di strftime (solo una volta).


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.