1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/**
* convertir une date en timestamp
* @param datetime
* @return string
*/
function toTimestamp($date) {
list($year, $month, $day, $hour, $minute, $second) = array_values($date);
return mktime($hour, $minute, $second, $month, $day, $year);
}
/***
* Calcule la différente entre deux dates
* @param datetime $date1 date 1
* @param datetime $date2 date 2
* @param string $typeStep type de différence (mois, annee...)
* @param integer $valueStep "pas" de différence. Par exempel, pour un trimestre, mettre $typeStep à 'month' et $valueStep à "3"
* @param string $round floor|ceil|(nothing|no|null)
* @return integer
*/
function getDifference($date1, $date2, $typeStep='month', $valueStep = 1,$round='floor') {
$b1 = toTimestamp($b1);
$b2 = toTimestamp($b2);
$multiplier = 0;
switch($typeStep) {
case 'second':
$multiplier = 1;
break;
case 'minute':
$multiplier = 60;
break;
case 'hour':
$multiplier = 60*60;
break;
case 'day':
$multiplier = 60*60*24;
break;
case 'week':
$multiplier = 60*60*24*7;
break;
case 'month':
$multiplier = 2628000;
break;
case 'quarter':
$multiplier = 2628000 * 4;
break;
case 'year':
$multiplier = 31536000;
break;
}
$n = ($b2 - $b1) / $multiplier;
switch($round) {
case 'ceil': $n = ceil($n); break;
case 'floor': $n = floor($n); break;
default: $n = ceil($n); break;
}
return $n;
} |
Partager