PHP'结束日期'来自给定的“开始日期” - 下个月的最后一天/第15天

时间:2009-11-06 10:59:16

标签: php date

我想从 PHP 中的给定“开始日期”获得“结束日期”。结束日期以开始为基础,计算方法如下:

如果开始日期是月份的1-15,则结束日期是下个月的第15天。

如果开始日期是从该月的16-31开始,则结束日期是下个月的最后一天。

例如:$ start_date ='2009-11-23';

2 个答案:

答案 0 :(得分:1)

这可行吗?

$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);

答案 1 :(得分:1)

这是另一种方法:

$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');