note 93915 added to function.date-diff
| From: | davix at osu1 dot php dot net | Date: | Tue, 06 Oct 2009 19:46:47 +0000 |
| Subject: | note 93915 added to function.date-diff | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-161412@lists.php.net to get a copy of this message | ||
This is correctly working time differentiating function. It's resistant to problems with leap
year and different days of month. Inputs are two timestamps and function returns array with
differences in year, month, day, hour, minute a nd second.
<?php
function date_diff($d1, $d2){
/* compares two timestamps and returns array with differencies (year, month, day, hour, minute,
second)
*/
//check higher timestamp and switch if neccessary
if ($d1 < $d2){
$temp = $d2;
$d2 = $d1;
$d1 = $temp;
}
else {
$temp = $d1; //temp can be used for day count if required
}
$d1 = date_parse(date("Y-m-d H:i:s",$d1));
$d2 = date_parse(date("Y-m-d H:i:s",$d2));
//seconds
if ($d1['second'] >= $d2['second']){
$diff['second'] = $d1['second'] - $d2['second'];
}
else {
$d1['minute']--;
$diff['second'] = 60-$d2['second']+$d1['second'];
}
//minutes
if ($d1['minute'] >= $d2['minute']){
$diff['minute'] = $d1['minute'] - $d2['minute'];
}
else {
$d1['hour']--;
$diff['minute'] = 60-$d2['minute']+$d1['minute'];
}
//hours
if ($d1['hour'] >= $d2['hour']){
$diff['hour'] = $d1['hour'] - $d2['hour'];
}
else {
$d1['day']--;
$diff['hour'] = 24-$d2['hour']+$d1['hour'];
}
//days
if ($d1['day'] >= $d2['day']){
$diff['day'] = $d1['day'] - $d2['day'];
}
else {
$d1['month']--;
$diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
}
//months
if ($d1['month'] >= $d2['month']){
$diff['month'] = $d1['month'] - $d2['month'];
}
else {
$d1['year']--;
$diff['month'] = 12-$d2['month']+$d1['month'];
}
//years
$diff['year'] = $d1['year'] - $d2['year'];
return $diff;
}
$born_date = mktime(6,30,0,7,24,2008);
$date_diff_array = date_diff($born_date, time());
print_r($date_diff_array);
?>
----
Server IP: 87.124.86.47
Probable Submitter: 89.103.123.67 (proxied: 89.103.123.67)
----
Manual Page -- http://www.php.net/manual/en/function.date-diff.php
Edit -- https://master.php.net/note/edit/93915
Del: integrated -- https://master.php.net/note/delete/93915/integrated
Del: useless -- https://master.php.net/note/delete/93915/useless
Del: bad code -- https://master.php.net/note/delete/93915/bad+code
Del: spam -- https://master.php.net/note/delete/93915/spam
Del: non-english -- https://master.php.net/note/delete/93915/non-english
Del: in docs -- https://master.php.net/note/delete/93915/in+docs
Del: other reasons-- https://master.php.net/note/delete/93915
Reject -- https://master.php.net/note/reject/93915
Search -- https://master.php.net/manage/user-notes.php