我正在努力构建以下内容:
我需要的结果:
$months = array();
$months
(
month[0] = '2011-10-1'
month[1] = '2011-11-1'
month[2] = '2011-12-1'
month[3] = '2012-1-1'
)
来自以下变量:
$date = '2011-10-1';
$numberOfMonths = 4;
任何帮助都将不胜感激。
谢谢,伙计......所有这些解决方案都有效。我接受了最适合我使用的那个。
答案 0 :(得分:2)
您可以使用简单的循环和strtotime()
:
$date = '2011-10-1';
$numberOfMonths = 4;
$current = strtotime($date);
$months = array();
for ($i = 0; $i < $numberOfMonths; $i++) {
$months[$i] = date('Y-n-j', $current);
$current = strtotime('+1 month', $current);
}
答案 1 :(得分:1)
$date = DateTime::createFromFormat('Y-m-j', '2011-10-1');
$months = array();
for ($m = 0; $m < $numberOfMonths; $m++) {
$next = $date->add(new DateInterval("P{$m}M"));
$months[] = $next->format('Y-m-j');
}
答案 2 :(得分:0)
您可以在split
上使用date
,然后在月内使用for
循环。诀窍是使用像
$newMonth = ($month + $i) % 12 + 1;
(%
被称为模数,并且完全符合您的要求。)
答案 3 :(得分:0)
<?php
function getNextMonths($date, $numberOfMonths){
$timestamp_now = strtotime($date);
$months[] = date('Y-m-d', $timestamp_now);
for($i = 1;$i <= $numberOfMonths; $i++){
$months[] = date('Y-m-d', (strtotime($months[0].' +'.$i.' month')));
}
print_r($months);
}
getNextMonths('2011-10-1', 4);