note 86386 deleted from function.date by danbrown
| From: | danbrown@php.net | Date: | Mon, 10 Nov 2008 15:35:43 +0000 |
| Subject: | note 86386 deleted from function.date by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-146352@lists.php.net to get a copy of this message | ||
Note Submitter: tchapin at gmail dot com
----
<?php
// Function used to take two date strings, and returns an associative array
// with different formats for the difference between the dates.
// Example: GetDateDifference('01/09/2008', '01/09/2009');
// Returns:
// Array['YearsSince'] = 1
// Array['MonthsSince'] = 12
// Array['DaysSince'] = 365
// Array['HoursSince'] = 8760
// Array['MinutesSince'] = 31536000
// Array['SecondsSince'] = 31536000
// Array['NiceString'] = "1 year"
function GetDateDifference($StartDateString=NULL, $EndDateString=NULL) {
$ReturnArray = array();
$SDSplit = explode('/',$StartDateString);
$StartDate = mktime(0,0,0,$SDSplit[0],$SDSplit[1],$SDSplit[2]);
$EDSplit = explode('/',$EndDateString);
$EndDate = mktime(0,0,0,$EDSplit[0],$EDSplit[1],$EDSplit[2]);
$DateDifference = $EndDate-$StartDate;
$ReturnArray['YearsSince'] = $DateDifference/60/60/24/365;
$ReturnArray['MonthsSince'] = $DateDifference/60/60/24/12;
$ReturnArray['DaysSince'] = $DateDifference/60/60/24;
$ReturnArray['HoursSince'] = $DateDifference/60/60;
$ReturnArray['MinutesSince'] = $DateDifference/60;
$ReturnArray['SecondsSince'] = $DateDifference;
$y1 = date("Y", $StartDate);
$m1 = date("m", $StartDate);
$d1 = date("d", $StartDate);
$y2 = date("Y", $EndDate);
$m2 = date("m", $EndDate);
$d2 = date("d", $EndDate);
$diff = '';
if (($EndDate - $StartDate)<0) {
$diff = "Error: Start date is before end date!";
} else {
$y = $y2 - $y1;
$m = $m2 - $m1;
$d = $d2 - $d1;
$daysInMonth = date("t",$m2);
if ($d<0) {$m--;$d=$daysInMonth-$d;}
if ($m<0) {$y--;$m=12-$m;}
if ($y>0) $diff .= $y==1 ? "1 year" : "$y years";
if ($y>0 && $m>0) $diff .= ", ";
if ($m>0) $diff .= $m==1? "1 month" : "$m months";
if (($m>0||$y>0) && $d>0) $diff .= ", and ";
if ($d>0) $diff .= $d==1 ? "1 day" : "$d days";
}
$ReturnArray['NiceString'] = $diff;
return $ReturnArray;
}
?>