Pagina 1 din 1
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Dum Iul 31, 2011
de Pigmy
Cod: Selectaţi tot
<?php
function Sec2Time($time)
{
if(is_numeric($time))
{
$value = array(
"hours" => 0,
"minutes" => 0,
"seconds" => 0,
);
if($time >= 3600)
{
$value["hours"] = floor($time/3600);
$time = ($time%3600);
}
if($time >= 60)
{
$value["minutes"] = floor($time/60);
$time = ($time%60);
}
$value["seconds"] = floor($time);
return (array) $value;
}else{
return (bool) FALSE;
}
}
?>
Bun, tot am incercat sa modific acest cod, incat sa fac ceva de genul:
Cod: Selectaţi tot
$timp = Transformare($row['timp']);
print("<td>$timp</td>");
Pe web in loc sa-mi apara 3660 secunde sa-mi apara: 1:01:00
Aveti idee cum sa fac? Am mai gasit un script de genu, dar nu transforma si in secunde, si as vrea sa inteleg si eu TRANSFORMAREA asta
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Dum Iul 31, 2011
de MarPlo
Salut
Acea functie, Sec2Time(), returneaza un Array cu 3 element, pt. Ora, Minute, Secunde; fiecare retinut intr-un element.
Ca sa intelegi, vezi exemplu de mai jos si explicatiile din el:
Cod: Selectaţi tot
<?php
// transoma secunde in Ore, Minute, Secunde (returnate intr-un Array)
function secToTime($time){
// daca parametru e un numar
if(is_numeric($time)){
// defineste Array-ul cu elementele ce vor fi returnate
$arr_mhs = array( 'hours'=>0, 'minutes'=>0, 'seconds'=>0 );
// daca $time e mai mare sau egal cu o ora (3600 secunde)
// preia in Array numar ore si lasa in $time restu de secunde
if($time >= 3600){
$arr_mhs['hours'] = floor($time/3600);
$time = ($time%3600);
}
// daca $time e mai mare sau egal cu un minut (60 secunde)
// preia numar minute in Array si lasa in $time restu de secunde
if($time >= 60){
$arr_mhs['minutes'] = floor($time/60);
if($arr_mhs['minutes']<10) $arr_mhs['minutes'] = '0'.$arr_mhs['minutes']; // adauga 0 inainte daca < 10
$time = ($time%60);
}
// adauga in Array si secundele ramase
$arr_mhs['seconds'] = floor($time);
if($arr_mhs['seconds']<10) $arr_mhs['seconds'] = '0'.$arr_mhs['seconds']; // adauga 0 inainte daca < 10
return $arr_mhs;
}
else return FALSE; // return False daca $time nu e numar
}
$timp = 3660; // nr. secunde
$ar_timp = secToTime($timp); // apeleaza functia ce separa Ore, Minute si secunde, si retine Array-ul returnat
// Defineste sirul ce va fi afisat, cu elementele din Array
$hms_timp = $ar_timp['hours']. ':'. $ar_timp['minutes']. ':'. $ar_timp['seconds'];
echo $hms_timp; // 1:01:00
?>
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Lun Aug 01, 2011
de Pigmy
Da, bun...acuma inteleg cum se face, cum se transforma. Acuma vine greul, sa folosesc acest cod la baza de date.
Bun, de ce imi spune in casuta de TIMP "Array"?
Cod: Selectaţi tot
<?php
function secToTime($time)
{
if(is_numeric($time))
{
$arr_mhs = array( 'hours'=>0, 'minutes'=>0, 'seconds'=>0 );
if($time >= 3600)
{
$arr_mhs['hours'] = floor($time/3600);
$time = ($time%3600);
}
if($time >= 60)
{
$arr_mhs['minutes'] = floor($time/60);
if($arr_mhs['minutes']<10) $arr_mhs['minutes'] = '0'.$arr_mhs['minutes'];
$time = ($time%60);
}
$arr_mhs['seconds'] = floor($time);
if($arr_mhs['seconds']<10) $arr_mhs['seconds'] = '0'.$arr_mhs['seconds']; // adauga 0 inainte daca < 10
return $arr_mhs;
}else{
return FALSE;
}
$HMS = $hours . ':'. $minutes . ':'. $seconds;
return $HMS;
}
echo "<html>
while($row = mysql_fetch_array($getdata))
{
$timp = secToTime($row['timp']);
print("<td>$timp</td>");
}
echo "</html>"
?>
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Lun Aug 01, 2011
de MarPlo
Pigmy scrie:Bun, de ce imi spune in casuta de TIMP "Array"?
Fiindca secToTime() returneaza un Array cu 3 elemente, pt. Ore, Minute, Secunde.
Este explicat in comentariile din exemplu de mai sus.
Daca nu stii cum se lucreaza cu Array si cu functii, vezi lectiile de PHP-MySQL de pe site.
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Mar Aug 02, 2011
de Pigmy
Am reusit. Acuma vine ultima intrebare legat de acest scriptulet.
Intrebarea mea este urmatoarea:
Cum pot sa fac "return" de genu:
Cod: Selectaţi tot
$HMSTIMP = $hours . ':' . $minutes . ':' . $seconds;
return $HMSTIMP;
El returneaza la ce am mai sus, eu vreau sa fac ceva de genu:
Cod: Selectaţi tot
if($HMSTIMP >= 3600)
{
$HMSTIMP = $hours . ':' . $minutes . ':' . $seconds;
}
if($HMSTIMP >= 60)
{
$HMSTIMP = $minutes . ':' . $seconds;
}
return $HMSTIMP;
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Mie Aug 03, 2011
de MarPlo
Vezi urmatorul exemplu, e aceeasi functie, putin modificata. Aceasta returneaza direct un sir cu Ore:Minute:Secunde.
Varianta cu Array e buna mai ales cand iti trebuie doar o parte din aceste trei date, si le poti lua din array pe fiecare.
Cod: Selectaţi tot
<?php
// transoma secunde in Ore, Minute, Secunde (returnate intr-un Array)
function secToTime($time){
// daca parametru e un numar
if(is_numeric($time)){
// defineste Array-ul cu elementele ce vor fi returnate
$arr_mhs = array( 'hours'=>0, 'minutes'=>0, 'seconds'=>0 );
// daca $time e mai mare sau egal cu o ora (3600 secunde)
// preia in Array numar ore si lasa in $time restu de secunde
if($time >= 3600){
$arr_mhs['hours'] = floor($time/3600);
$time = ($time%3600);
}
// daca $time e mai mare sau egal cu un minut (60 secunde)
// preia numar minute in Array si lasa in $time restu de secunde
if($time >= 60){
$arr_mhs['minutes'] = floor($time/60);
if($arr_mhs['minutes']<10) $arr_mhs['minutes'] = '0'.$arr_mhs['minutes']; // adauga 0 inainte daca < 10
$time = ($time%60);
}
// adauga in Array si secundele ramase
$arr_mhs['seconds'] = floor($time);
if($arr_mhs['seconds']<10) $arr_mhs['seconds'] = '0'.$arr_mhs['seconds']; // adauga 0 inainte daca < 10
return implode(':', $arr_mhs); returneaza un sir cu Ore:Minute:Secunde
}
else return 'Parametru incorect, trebuie un numar de secunde';
}
$timp = 7890; // nr. secunde
$hms_timp = secToTime($timp); // apeleaza functia ce returneaza Ore:Minute:Secunde
echo $hms_timp; // 2:11:30
?>
- Ca sa fie la minute 08, daca minute nu e mai mare decat 10, se poate asa:
Transforma secunde in H:M:S (Ore, Minute, Secunde)
Scris: Mie Aug 03, 2011
de Pigmy
Am inteles, am reusit acuma. Mai e o nelamurire, fac un nou topic.
Multumesc inca-o data MarPlo pentru ajutor.