Merge pull request #18802 from javieralapps4up/14.0
Close: #18801 Jan-30 + 1m IS NOT Mar-2
This commit is contained in:
commit
f7b12208d1
@ -117,7 +117,7 @@ function getServerTimeZoneInt($refgmtdate = 'now')
|
||||
* @param int $duration_unit Unit of added delay (d, m, y, w, h, i)
|
||||
* @return int New timestamp
|
||||
*/
|
||||
function dol_time_plus_duree($time, $duration_value, $duration_unit)
|
||||
function dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth = 0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
@ -166,7 +166,31 @@ function dol_time_plus_duree($time, $duration_value, $duration_unit)
|
||||
} else {
|
||||
$date->add($interval);
|
||||
}
|
||||
//Change the behavior of PHP over data-interval when the result of this function is Feb 29 (non-leap years), 30 or Feb 31 (php returns March 1, 2 or 3 respectively)
|
||||
if ($ruleforendofmonth == 1 && $duration_unit == 'm') {
|
||||
$timeyear = dol_print_date($time, '%Y');
|
||||
$timemonth = dol_print_date($time, '%m');
|
||||
$timetotalmonths = (($timeyear * 12) + $timemonth);
|
||||
|
||||
$monthsexpected = ($timetotalmonths + $duration_value);
|
||||
|
||||
$newtime = $date->getTimestamp();
|
||||
|
||||
$newtimeyear = dol_print_date($newtime, '%Y');
|
||||
$newtimemonth = dol_print_date($newtime, '%m');
|
||||
$newtimetotalmonths = (($newtimeyear * 12) + $newtimemonth);
|
||||
|
||||
if ($monthsexpected < $newtimetotalmonths) {
|
||||
$newtimehours = dol_print_date($newtime, '%H');
|
||||
$newtimemins = dol_print_date($newtime, '%M');
|
||||
$newtimesecs = dol_print_date($newtime, '%S');
|
||||
|
||||
$datelim = dol_mktime($newtimehours, $newtimemins, $newtimesecs, $newtimemonth, 1, $newtimeyear);
|
||||
$datelim -= (3600 * 24);
|
||||
|
||||
$date->setTimestamp($datelim);
|
||||
}
|
||||
}
|
||||
return $date->getTimestamp();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user