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 ) ); ?>
Yorum Yap