Functia prezentata in aceasta pagina,
diffDateTime(), poate fi utilizata pentru a obtine
diferenta dintre 2 date de timp si ore. Aceasta functie primeste doi parametri: data sau ora de inceput, si cea de sfarsit intre care sa faca diferenta. Se pot folosi diferite formate de data si timp: Unix Timestamp, sau un sir continand aproape orice descriere textuala a datei (in engleza).
Functie pt diferenta dintre doua date de timp sau ore
Returneaza un array ce contine un sir cu o reprezentare textuala a diferentei, si separat: zile, ore, minute, secunde, total ore, total minute, total secunde (vedeti in exemplele de mai jos).
/* Functie pt diferenta dintre doua date de timp sau ore
$start / $end in Unix Timestamp, sau sir continand aproape orice descriere textuala a datei (in engleza)
Returneaza un array ce contine un sir cu o reprezentare textuala a diferentei,
si separat: zile, ore, minute, secunde, total ore, total minute, total secunde
*/
function diffDateTime($start, $end) {
// Curs PHP-MySQL - https://marplo.net/php-mysql/
// defineste $start si $end in Unix Timestamp
if(!is_int($start)) $start = strtotime($start);
if(!is_int($end)) $end = strtotime($end);
// daca diferenta e negativa, orele sunt din zile diferite, adauga o zi (in sec.)
$diff = ($end >= $start) ? $end - $start : 86400 + $end - $start;
// defineste numarul de zile, ore, minute, secunde din diferenta
$d = floor($diff / 86400);
$h = floor(abs($diff - $d*86400)/3600);
$m = floor(abs($diff - $d*86400 - $h*3600)/60);
$s = $diff % 60;
// seteaza cuvintele, singular sau plural
$dstr = ($d == 1) ? ' zi ' : ' zile ';
$hstr = ($h == 1) ? ' ora ' : ' ore ';
$mstr = ($m == 1) ? ' minut ' : ' minute ';
$sstr = ($s == 1) ? ' secunda ' : ' secunde ';
// setare pt sirul adaugat in reprezentarea textuala a diferentei
$sdiff_d = ($d != 0) ? $d.$dstr : '';
$sdiff_h = ($h != 0) ? $h.$hstr : '';
$sdiff_m = ($m != 0) ? $m.$mstr : '';
return array(
'diff' => $sdiff_d. $sdiff_h. $sdiff_m. $s.$sstr,
'days' => $d, 'hours'=>$h, 'min'=>$m, 'sec'=>$s,
'totalhours' => floor($diff/3600), 'totalmin' => floor($diff/60), 'totalsec'=>$diff
);
}
- Exemple utilizare functie diffDateTime(), cu mai multe formate diferite de data si timp:
<?php
// Aici se adauga functia diffDateTime()
$df1 = diffDateTime('8:35:6', '8:55:34'); // diferenta dintre 2 ore, cu minue si secunde
$df2 = diffDateTime('07/19/2012 14:10:00', 'now'); // diferenta dintre o data precedenta si timpul actual
$df3 = diffDateTime('25 August 2012 14:10:00', '18-09-2012 08:25:00'); // diferenta dintre doua date complete
$df4 = diffDateTime(1348012438, 1348029429); // diferenta dintre 2 date in Timestamp
// Test, afiseaza array-ul cu datele pt fiecare diferenta
var_export($df1);
/*
array (
'diff' => '20 minutes 28 seconds ',
'days' => 0, 'hours' => 0, 'min' => 20, 'sec' => 28,
'totalhours' => 0, 'totalmin' => 20, 'totalsec' => 1228
)
*/
var_export($df2);
/*
array (
'diff' => '61 days 16 hours 9 minutes 20 seconds ',
'days' => 72, 'hours' => 16, 'min' => 9, 'sec' => 20,
'totalhours' => 1744, 'totalmin' => 104649, 'totalsec' => 6278960
)
*/
var_export($df3);
/*
array (
'diff' => '23 days 18 hours 15 minutes 0 seconds ',
'days' => 23, 'hours' => 18, 'min' => 15, 'sec' => 0,
'totalhours' => 570, 'totalmin' => 34215, 'totalsec' => 2052900
)
*/
var_export($df4);
/*
array (
'diff' => '4 hours 43 minutes 11 seconds ',
'days' => 0, 'hours' => 4, 'min' => 43, 'sec' => 11,
'totalhours' => 4, 'totalmin' => 283, 'totalsec' => 16991
)
*/
?>