我需要将任何日期转换为从今天起1个月内的日期。日期小于今天的日期应转换为下个月。
例如,当前日期为2018-09-11,日期为:
$dates = ['2018-08-01', '2018-09-11', '2018-09-15', '2018-10-15', '2018-12-31', '2019-01-01', '2019-01-31'];
结果应分别如下:
$result = ['2018-10-01', '2018-09-11', '2018-09-15', '2018-09-15', '2018-09-30', '2018-10-01, '2018-09-30'];
编辑:到目前为止,我已经尝试过使用strtotime('+ 1 month'),但是它在诸如2018-10-31之类的日期上失败了,因为它将给出2018-12-01。它也无法在诸如2018-10-31之类的日期上使用strtotime('-1 month')给出2018-10-01而不是2018-09-30。
以下是我当前的解决方案,但我认为可以通过某种方式更简单地完成它:
$timestamp = strtotime('2018-10-31');
if (date('d', $timestamp) > date('t')) {
$date = date('Y-m-t');
} elseif(date('d', $timestamp) < date('d')) {
$year = date('Y');
$month = date('m') == 12 ? 1 : (intval(date('n')) + 1);
if ($month < 10) {
$month = '0'.$month;
}
$day = date('d', $timestamp);
$date = $year . '-' . $month . '-' . $day;
} else {
$date = date('Y-m') . '-' . date('d', $timestamp);
}
答案 0 :(得分:-1)
您可以使用
if('2018-09-11'<date("Y-m-d"))
date("Y-m-d", strtotime("+1 month", '2018-09-11'));
例如