Newsgroup: it.comp.www.php
Titolo: trasformare numero di secondi in ore

Salve !
ho un numero di secondi che indicano il tempo di login di un soggetto. 
esiste una funzione che dal valore int 429620 (secondi) mi restituisce:
giorni X , ore Y, minuti Z ?
grazie


Non saprei.. ma mi collego per fare un'altra domanda.. esiste una funzione 
che fa il contrario ?
Cioč che dato un orario mi calcola i secondi ?
Es 17:34:46 --> tot secondi
Se esiste potrebbe anche essere la stessa.. ma non l'ho trovata!
-- 
oooO                                  Oooo
 (     )              YUS              (     )
  \   (      Para todos, todo,      )   /
   \_ )    nada para nosotros.  ( _/ 

 Cioè che dato un orario mi calcola i secondi ?
Qui ci sono un po' di funzioni che lavorano col tempo:
http://www.php.net/manual/en/ref.datetime.php
Non so se fanno esattamente al caso vostro però potrebbero tornare utili.
-- 
Ciao!
Francesco (slackware powered)
"L'uomo è fatto di tempo" (B. Grillo)

 giorni X , ore Y, minuti Z ?
Probabilmente esiste, solo che a prima vista mi viene un dubbio: il tempo di 
login di un soggetto è appunto un numero di secondi. Bene, ragionando, 
facciamo finta che il tempo sia TRE. Come è pensabile che dal numero TRE si 
riesca a capire che giorno, ora, minuti, secondi sono?? Come minimo c'è 
bisogno di un riferimento per lo start (ad esempio: utente loggato il 
gg/mm/aa alle hh:mm:ss). In questo secondo caso sicuramente ci sarà una 
funzione, classe ad hoc, ma anche crearne una nuova non dovrebbe essere 
troppo difficile.
ps: ma come sei riuscito a calcolare il tempo di login di un utente?
rob4you 

 ps: ma come sei riuscito a calcolare il tempo di login di un utente?
microtime() ?


 
la somma del tempo intercorso tra l'ultima richiesta e l'attuale tempo.
l'ultima richiesta viene azzerata ovviamente quando l'utente rifà il login.
non è una stima precisa al microsecondo ma per i miei scopi è sufficiente.

 grazie
io uso questa grabbata in giro:
/* Works out the time since the entry post, takes a an argument in unix time
(seconds) */
function time_since($original) {
    // array of time period chunks
    $chunks = array(
        array(31622400, 'year'),
        array(2592000, 'month'),
        array(604800, 'week'),
        array(86400, 'day'),
        array(3600, 'hour'),
        array(60, 'minute')
        #array(1 , 'second')
    );
    $today = time(); /* Current unix time  */
    $since = $today - $original;
    // $j saves performing the count function each time around the loop
    for ($i = 0, $j = count($chunks); $i < $j; $i++) {
        $seconds = $chunks[$i][0];
        $name = $chunks[$i][1];
        // finding the biggest chunk (if the chunk fits, break)
        if (($count = floor($since / $seconds)) != 0) {
            // DEBUG print "<!-- It's $name -->\n";
            break;
        }
    }
    $print = ($count == 1) ? '1 '.$name : "$count {$name}s";
    if ($i + 1 < $j) {
        // now getting the second item
        $seconds2 = $chunks[$i + 1][0];
        $name2 = $chunks[$i + 1][1];
        // add second item if it's greater than 0
        if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) !=
0) {
            $print .= ($count2 == 1) ? ', 1 '.$name2 : ", $count2
{$name2}s";
        }
    }
    return $print;
}
-- 
una volta qui era tutto <table>

 microtime() ?
microtime....."Restituisce l'attuale UNIX timestamp con i 
microsecondi".....ma come lego questa funzione alla permanenza di un utente 
loggato in un sito?
rob4you 


se il sessionid lo cambi ad ogni refresh di pagina..... sai ogni azione 
dell'utente dopo quanto viene effettuata.

 restituisce: giorni X , ore Y, minuti Z ?
Guarda se la seguente funzione (da completare e personalizzare) può
esserti utile:
<?php
function seconds_to_dhms($input=0)
{
  $res = array();
  $sec = array('d'=>86400, 'h'=>3600, 'm'=>60);
 
  foreach ($sec as $key => $value) {
    $res[$key] = intval($input/$value);
    $input -= $res[$key] * $value;
  }
 
  return $res['d'].'g, '.$res['h'].'h, '.$res['m'].'m, '.$input.'s';
}
print(seconds_to_dhms(429620)); // Stampa 4g, 23h, 20m, 20s  
?>
HTH
Ciao.
-- 
Federico