the function of to calculate the diff of date
| From: | LeeYeeKang 李藝康 | Date: | Mon, 18 Aug 2003 16:26:04 +0000 |
| Subject: | the function of to calculate the diff of date | ||
| Groups: | php.mirrors | ||
| Request: | Send a blank email to php-mirrors+get-20494@lists.php.net to get a copy of this message | ||
hi, i am Yeekang ,i used PHP in web programming. I think PHP isn't eazy to
calculate the diff of day (ex how many day between 2003/08/15 and 2003/09/21),
so i write this function and wish it can help others handles problems
efficiently.
string datediff(DATE $date,STRING $parameter,CHAR $split)
$date is date format which like 2003/03/16 YYYY/MM/DD
$parameter can be Date format or int,
if $parameter's type is Date ,function will calucute the diff between with
$date
else $date will increase/decrease the $parameter
$split is the mark to split the DATE, i think it may be useless @_@
YeeKang
<?
function datediff($date,$parameter,$split="0"){
//setting the pattern for split use
if($split!="0") //if the pattern have set by user
$pattern = $split;
else //found out the character which use at $date
$pattern = substr(ereg_replace("[0-9]","",$date),0,1);
$date1 = explode($pattern,$date); //split the date => year,month,day
if(!checkdate($date1[1],$date1[2],$date1[0])) //check the date format
return FALSE;
if(is_numeric($parameter)){ //if you want to increase or decrease
$timestamp = mktime(0,0,0,$date1[1],$date1[2]+$parameter,$date1[0]);
return date("Y-m-d",$timestamp); //return the date after
increase/decrease
}else{ //just found out the diff of the date
if($split=="0")
$pattern = substr(ereg_replace("[0-9]","",$parameter),0,1);
$date2 = explode($pattern,$parameter); //split the parameter =>
year,month,day
if(!checkdate($date2[1],$date2[2],$date2[0])) //check the date format
return FALSE;
$timestamp1 = mktime(0,0,0,$date1[1],$date1[2],$date1[0]);
//translate to timestamp
$timestamp2 = mktime(0,0,0,$date2[1],$date2[2],$date2[0]);
$diff = ($timestamp1 > $timestamp2)?($timestamp1 -
$timestamp2):($timestamp2 - $timestamp1);
return $diff/86400; //return the diff of the date
}
}
echo "Today : ".date("Y-m-d")."<br>";
echo "datediff(date(\"Y-m-d\"),4) : ".datediff(date("Y-m-d"),4);
echo "<br>";
echo "datediff(date(\"Y-m-d\"),-4) : ".datediff(date("Y-m-d"),-4);
echo "<br>";
echo "datediff(date(\"Y-m-d\"),\"2003-02-21\") :
".datediff(date("Y-m-d"),"2003-02-21");
echo "<br>";
echo "datediff(date(\"Y@m@d\"),\"2003@08@21\",\"@\") :
".datediff(date("Y@m@d"),"2003@08@21","@");
echo "<br>";
echo "datediff(date(\"Y@m@d\"),\"2003$08$21\") :
".datediff(date("Y@m@d"),"2003$08$21");
?>
Today : 2003-08-18
datediff(date("Y-m-d"),4) : 2003-08-22
datediff(date("Y-m-d"),-4) : 2003-08-14
datediff(date("Y-m-d"),"2003-02-21") : 178
datediff(date("Y@m@d"),"2003@08@21","@") : 3
datediff(date("Y@m@d"),"2003$08$21") : 3
-------------------------------------------------
This mail sent through NCTU WebMail System: https://webmail.nctu.edu.tw