我试图获取从第一个日期到第二个日期的天数,然后从第二个日期到第三个日期,依此类推。 我有这样的数组
$dates = array(
2016 - 02 - 01,
2016 - 03 - 01,
2016 - 04 - 01,
2016 - 05 - 01,
2016 - 06 - 01,
2016 - 07 - 01,
2016 - 09 - 01,
2016 - 11 - 01,
2016 - 12 - 01,
2017 - 01 - 01,
2017 - 12 - 01
);
我想知道从2016-02-01到2016-03-01,然后从2016-03-01到2016-04-01等天数,如果您发现有一些空白他们的日期跳跃超过1个月。 我希望它像这样的数组
array()(
[0] => 0,
[1] => 30,
[2] => 60
//so on ...
)
我是这样做的,但是我收到了像uninitialized string offset
这样的错误,我想我的做法很可能是错误的
public function rangeDates()
{
$dates = array(
'2016-02-01',
'2016-03-01',
'2016-04-01',
'2016-05-01',
'2016-06-01',
'2016-07-01',
'2016-09-01',
'2016-11-01',
'2016-12-01',
'2017-01-01',
'2017-12-01'
);
$datez = array();
$index = 0;
$indexone = 1;
foreach($dates as $date)
{
$datez = round(abs(strtotime($date[$index]) - strtotime($date[$indexone])) / 86400);
$index++;
$indexone++;
}
echo $datez;
}
日期采用字符串格式,我忘记提及的额外信息是需要添加的日期,例如,如果我们只采用年份
array(11) (
[0] => (int) 0
[1] => (int) 365
[2] => (int) 730
[3] => (int) 1095
[4] => (int) 1460
[5] => (int) 1825
[6] => (int) 2190
[7] => (int) 2555
[8] => (int) 2920
[9] => (int) 3285
[10] => (int) 3650
答案 0 :(得分:5)
这就是你需要的,循环遍历日期数组然后相应地计算日期的差异。你的循环将运行一个总数组大小的一小部分,从调用天数的间隔开始并将其存储在一个数组中。
$dates = array(
"2016-02-01",
"2016-03-01",
"2016-04-01",
"2016-05-01",
"2016-06-01",
"2016-07-01",
"2016-09-01",
"2016-11-01",
"2016-12-01",
"2017-01-01",
"2017-12-01"
);
$datez = array();
$date = array();
$datez[] = 0;
for($i = 1; $i < count($dates) - 1; $i++){
$start_date = $dates[$i-1];
$end_Date = $dates[$i];
$date1 = new DateTime($start_date);
$date2 = new DateTime($end_Date);
$interval = $date1->diff($date2);
$date[] = $interval->days;
$datez[] = array_sum($date);
}
print_r($date);
print_r($datez);