【发布时间】:2012-04-30 08:49:57
【问题描述】:
我想从 PHP 中的给定“开始日期”获取“结束日期”。结束日期基于开始日期,计算方式如下:
如果开始日期是每月 1 日至 15 日,则结束日期是下个月的 15 日。
如果开始日期是当月的 16-31 日,则结束日期是下个月的最后一天。
例如:$start_date = '2009-11-23';
【问题讨论】:
我想从 PHP 中的给定“开始日期”获取“结束日期”。结束日期基于开始日期,计算方式如下:
如果开始日期是每月 1 日至 15 日,则结束日期是下个月的 15 日。
如果开始日期是当月的 16-31 日,则结束日期是下个月的最后一天。
例如:$start_date = '2009-11-23';
【问题讨论】:
这行得通吗?
$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);
【讨论】:
这是另一种方法:
$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');
【讨论】: