Belirli bir 'başlangıç ​​tarihi' PHP'nin 'bitiş tarihi' - Aşağıdaki ayın son day/15th

2 Cevap php

I PHP belirli bir 'başlangıç ​​tarihi' bir 'bitiş tarihini' almak istiyorum. Bitiş tarihi başlangıç ​​kapalı dayanır ve aşağıdaki şekilde hesaplanır:

Başlangıç ​​tarihi ayın 1-15 dan ise, Bitiş tarihi izleyen ayın 15'i.

Başlangıç ​​tarihi ayın 16-31 geliyorsa, Bitiş tarihi izleyen ayın son günü.

örn: $ start_date = '2009-11-23 ';

2 Cevap

Bu işe yarayabilir?

$start_timestamp = strtotime('2009-11-17');
$d1 = getdate($start_timestamp);

$end_timestamp = mktime(
    0,
    0,
    0,
    $d1['mon'] + 1 + floor($d1['mday']/16),   // 1 before the 16th, then 2
    15 * (1-floor($d1['mday']/16)),        //15 before the 16th, then 0
    $d1['year']
);
$end_date = date('Y-m-d', $end_timestamp);

İşte bunu yapmak için başka bir yolu:

$dt = new DateTime($start_date);
if ($dt->format('d') > 15) {
    $day = 'last day';
} else {
    $day = (15 - $dt->format('d')) . ' days';
}
echo $dt->modify('next month ' . $day)->format('Y-m-d');