PHP-如何在日期数组中查找缺失的日期并填补缺失的空白

gre0gor

大家好,stackoverflow的社区。我有一个我无法解决的问题。我需要找到X个日期之间缺少的日期。谢谢。

从数据库获取数据

$stmt=$db_con->prepare("SELECT date_from, date_to, country FROM work WHERE worker_id=xx");

while($row = $stmt->fetch()) { <br>
   ...
   ...
data = array("date_from" => $date_from, "date_to" => $date_to, "country" => $country);
}


我得到的数据如下所示:

15.01.2020 --- 20.01.2020 ---国家0
01.02.2020 --- 05.02.2020 ---国家1
10.02.2020 --- 20.02.2020 ---国家2


这些日期是指工人在国外开始和完成工作的时间。我需要获取日期以了解工人何时在本国工作。第一个日期之前,最后一个日期之后以及中间的日期表示在本国工作。我的最终数据应保存在数组中,如下所示:


01.01.2020 --- 14.01.2020 ---家庭

15.01.2020 --- 20.01.2020 ---国家0

21.01.2020 --- 31.01.2020 ---家庭

01.02.2020 --- 05.02.2020- -国家1

6.02.2020--09.02.2020-家庭

10.02.2020 --- 20.02.2020-国家2 21.02.2020

--- 31.12.2020-家庭



安德烈亚斯

我假设您的示例中的2019年是错别字,因为数组的其余部分已正确排序。

在这里,我首先确保第一个项目的日期是所述月份的第一天。如果不是,则添加月份的“开始”。

然后,它进入循环并检查项目之间是否存在间隙,如果存在间隙则添加主项目。

$arr = array ( 0 => array ( 'datum_od' => '01.01.2020', 'datum_do' => '10.01.2020', ), 1 => array ( 'datum_od' => '15.01.2020', 'datum_do' => '20.01.2020', ), 2 => array ( 'datum_od' => '01.02.2020', 'datum_do' => '05.02.2020', ), 3 => array ( 'datum_od' => '25.11.2020', 'datum_do' => '25.12.2020', ));
$end_date = 0;

if(date('d', strtotime($arr[0]['datum_od'])) != '01'){
    $end_date = date('d.m.Y', strtotime($arr[0]['datum_od'] . ' -1 day')); 
    $new[] = array('datum_od' => date('01.m.Y', strtotime($arr[0]['datum_od'])), 'datum_do' => $end_date, 'home');
}

foreach($arr as $key => $item){
    if(date("d.m.Y", strtotime($end_date . " +1 day")) != date('d.m.Y', strtotime($item['datum_od']))){
        $end_date = date('d.m.Y', strtotime($item['datum_od'] . ' -1 day')); 
        $new[] = array('datum_od' => date('d.m.Y', strtotime($arr[$key-1]['datum_do'] . " +1 day")), 'datum_do' => $end_date, 'home');
        $new[] = $item;
    }else{
        $new[] = $item;
    }
}

var_dump($new);

https://3v4l.org/lCOGv

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询日期数组以仅显示将来的事件-PHP

来自分类Dev

在PHP中查找丢失的日期

来自分类Dev

MongoDB aggreagte填补缺失的日子

来自分类Dev

如何在PHP中检查日期格式?

来自分类Dev

PHP Laravel日期数组循环逻辑

来自分类Dev

如何在PHP中处理日期格式

来自分类Dev

重新索引并填补PySpark中的缺失日期

来自分类Dev

如何使用预先训练的模型填补缺失的价值?

来自分类Dev

如何在熊猫中添加缺失的日期

来自分类Dev

如何通过PHP对日期数组进行排序?

来自分类Dev

如何在PHP中的日期数组中从最接近的日期到最远的日期排序

来自分类Dev

在PHP中如何从一组自定义周期中获取日期数组

来自分类Dev

在php中查找丢失的日期

来自分类Dev

如何在php中显示日期格式?

来自分类Dev

在PHP中生成日期数组

来自分类Dev

PHP-格式化日期数组并比较

来自分类Dev

如何在PHP上查找本周第一天的日期数字

来自分类Dev

用PHP查找星期数日期

来自分类Dev

用缺失的年份按升序填充PHP中的数组

来自分类Dev

如何从php中的数组中获取第一个缺失的数字100

来自分类Dev

如何使用 php 显示 MySQL 数据库中的十进制和日期数组

来自分类Dev

如何计算php数组中的多个日期

来自分类Dev

PHP 图表 - 用值填充缺失的日期

来自分类Dev

填补缺失值

来自分类Dev

php中的星期日到星期六星期日期数组

来自分类Dev

某些小时的空白数据 - 因此在我的数组中丢失。有没有办法填补缺失的时间?

来自分类Dev

PHP - 从 stdObject 中查找额外/缺失的类变量

来自分类Dev

如何在给定的开始日期和结束日期之间的数组中添加缺失的数据条目

来自分类Dev

PHP DateTime 输出范围内的日期数组

Related 相关文章

热门标签

归档