Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT DATE_SUB('2004-12-31', INTERVAL 3 MONTH)
- $maxDate = '2004-12-31';
- $timestamp = ;
- echo date('Y-m-d', strtotime($maxDate . ' - 3 month'));
- $Date = new DateTime('2004-12-31');
- $Date->sub(DateInterval::createFromDateString('3 months'));
- echo $Date->format('Y-m-d');
- echo findDate('2004-12-31', -3); // 2004-09-29
- function findDate($start_date, $months) {
- $start_date_object = new DateTime($start_date);
- $date_interval = findInterval($months, $start_date_object);
- $end_date_object = $start_date_object->add($date_interval);
- $end_date_object->sub(new DateInterval('P1D'));
- return $end_date_object->format('Y-m-d');
- }
- function findInterval($n_months, DateTime $start_date_object) {
- $date_of_last_day_next_month = new DateTime($start_date_object->format('Y-m-d'));
- $date_of_last_day_next_month->modify('last day of +'.$n_months.' month');
- if($start_date_object->format('d') > $date_of_last_day_next_month->format('d')) {
- return $start_date_object->diff($date_of_last_day_next_month);
- } else {
- return new DateInterval('P'.$n_months.'M');
- }
- }
- function subMonths(Datetime $dateTime, int $months)
- {
- if ($invert = $months < 0) {
- $months *= -1;
- }
- for ($i=0; $i<$months; $i++) {
- $daysOfMonth = cal_days_in_month(CAL_GREGORIAN, $dateTime->format('m'), $dateTime->format('Y'));
- $dateTime->modify(($invert ? '-' : '+') . $daysOfMonth . ' day');
- }
- return $dateTime;
- }
- $dateTime = new DateTime('2004-12-31');
- echo subMonths($dateTime, -3)->format('Y-m-d'); // 2004-09-30
Add Comment
Please, Sign In to add comment