note 98605 added to datetime.diff
| From: | SergioAbreu at osu1 dot php dot net | Date: | Fri, 25 Jun 2010 19:19:05 +0000 |
| Subject: | note 98605 added to datetime.diff | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-170472@lists.php.net to get a copy of this message | ||
/* Sergio Abreu's datediff
* Contact: http://sites.sitesbr.net
* Function s_datediff means (Special or Sergio Abreu's) datediff
* Returns decimal portions of two different datetimes.
* Converts string representations of date automatically.
* First param examples:
"s" for seconds
"i" for minutes
"h" for hours
"d" for days
"m" for months
"y" for years
Shownegatives is optional, and default is false, to use absolute function on the result (never
negative).
*/
function s_datediff( $str_interval, $dt_menor, $dt_maior, $shownegative=false){
if( is_string( $dt_menor)) $dt_menor = date_create( $dt_menor);
if( is_string( $dt_maior)) $dt_maior = date_create( $dt_maior);
$diff = date_diff( $dt_menor, $dt_maior, ! $shownegative);
switch( $str_interval){
case "y":
$total = $diff->y + $diff->m / 12; break;
case "m":
$total= $diff->y * 12 + $diff->m + $diff->d/30;
break;
case "d":
$total = $diff->y * 365.25 + $diff->m * 30 + $diff->d + $diff->h/24;
break;
case "h":
$total = ($diff->y * 365.25 + $diff->m * 30 + $diff->d) * 24 + $diff->h +
$diff->i/60;
break;
case "i":
$total = (($diff->y * 365.25 + $diff->m * 30 + $diff->d) * 24 + $diff->h)
* 60 + $diff->i + $diff->s/60;
break;
case "s":
$total = ((($diff->y * 365.25 + $diff->m * 30 + $diff->d) * 24 +
$diff->h) * 60 + $diff->i)*60 + $diff->s;
break;
}
if( $diff->invert) return -1 * $total;
else return $total;
}
Enjoy, and comment if you liked.
----
Server IP: 69.147.83.197
Probable Submitter: 189.79.161.100
----
Manual Page -- http://www.php.net/manual/en/datetime.diff.php
Edit -- https://master.php.net/note/edit/98605
Del: integrated -- https://master.php.net/note/delete/98605/integrated
Del: useless -- https://master.php.net/note/delete/98605/useless
Del: bad code -- https://master.php.net/note/delete/98605/bad+code
Del: spam -- https://master.php.net/note/delete/98605/spam
Del: non-english -- https://master.php.net/note/delete/98605/non-english
Del: in docs -- https://master.php.net/note/delete/98605/in+docs
Del: other reasons-- https://master.php.net/note/delete/98605
Reject -- https://master.php.net/note/reject/98605
Search -- https://master.php.net/manage/user-notes.php