0
$date1 = "2007-03-24";
$date2 = "2009-06-26";

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

$arary_dates = array ();

for ($days=1;$i<=$days;$days++)
{
$array_dates[$days] -> new DateTime(2007,0,$days);
}

我知道这段代码是错误的,但是我可以向你展示我想要的东西。

我有一个初始日期,我想用从初始日期到最终日期的每个日期填充一个对象数组日期(使用传递的天数来增加)

我怎么能做到?

4

3 回答 3

3

显然,您将需要修改开始时间和结束时间,但这会让您开始。

$start = new DateTime('first day of this month');
$end = new DateTime('first day of next month');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);

foreach ($period as $dt)
{
    echo $dt->format("l Y-m-d") . PHP_EOL;
}
于 2013-04-04T17:45:04.507 回答
1

将日期存储为时间戳并将其用于您的计算...即

$start = strtotime($date1);
$end = strtotime($date2);

$dayArray = array();
while($start != $end) {
   $start += 60*60*24;  //seconds in a day, you could alter this to multiple by number of days passed in
   $dayArray[] = $start;
}

然后使用 date() 方法以您选择的格式显示时间戳。

于 2013-04-04T17:43:02.477 回答
0

我以前没有做过这样的事情,所以我不确定我的代码是否可以工作。但尽量遵循逻辑。

$start = strtotime("2007-03-24"); //日期1
$end = strtotime("2009-06-26"); //日期2

$array_date = 数组();
而 ($start != $end) {
    $array_dates[] = date('Ymj',$start);
    $oneDay = 60 * 60 * 24;
    $start += $oneDay;
}


于 2013-04-04T17:45:49.553 回答