Mevcut Tarihe 30 Gün Ekleme

Strtotime fonksiyonu ile mevcut tarihe belirli bir gün ekleyerek istediğimiz yeni tarihi elde edebilmekteyiz.

Taksit tablosu gibi bir X tarihinden sonra aynı günlere denk gelecek şekilde özellik yapmak istediğimizde bu fonksiyonda 31 gün çeken aylarla alakalı 30 gün eklemede aşağıdaki örnekteki gibi sorun çıkmaktadır.

Örneğin : Taksit ödeme tarihimizin başlangıcı 31 Mart 2016 olsun. Bundan sonraki tarihler 30 gün itibariyle işlem yapmak istediğimizde 3 taksitli tarihler şu şekilde çıkmaktadır.

1. Taksit 31 Mart 2016
2. Taksit 01 Mayıs 2016
3. Taksit 31 Mayıs 2016

Ama bizim olmasını istediğimiz tarihler ise aşağıdaki gibidir.

1. Taksit 31 Mart 2016
2. Taksit 30 Nisan 2016
3. Taksit 31 Mayıs 2016

Bunu aşağıdaki kod yardımıyla çözebilirsiniz:

<?php
function nextMonths( $date ){
    $dateArray = [0 => $date];
    for( $i=1; $i<=12; $i++){
        $new_date = date('Y-m-d', strtotime('+'.$i.' months', strtotime($date) ) );
        $next_month = date('Y-m-d', strtotime('last day of next month', strtotime( end($dateArray) ) ));
        if ( date('m', strtotime($new_date) ) != date('m', strtotime($next_month)) ){            
            $dateArray[] = $next_month;
        } else {
            $dateArray[] = $new_date;
        }
    }
    return $dateArray;
}
$date = '2016-12-31';
print_r( nextMonths( $date ) );
?>

Dosyaya Gözat ve İndir

Paylaş: