$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);
}
我知道这段代码错了,但是我可以向你展示我想要的东西。
我有一个初始日期,我想用自初始日期到最终日期之前的每个日期填充一个对象数组日期(使用递增的天数)
我怎么能这样做?
答案 0 :(得分: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;
}
答案 1 :(得分: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()方法以您选择的格式显示时间戳。
答案 2 :(得分:0)
我之前没有这样做过,所以我不确定我的代码是否有用。但请尝试遵循逻辑。
$start = strtotime("2007-03-24"); //date1 $end = strtotime("2009-06-26"); //date2 $array_date = array(); while ($start != $end) { $array_dates[] = date('Y-m-j',$start); $oneDay = 60 * 60 * 24; $start += $oneDay; }