首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从数组php中查找连续的日期时间

,可以通过以下步骤实现:

  1. 遍历数组,将日期时间字符串转换为时间戳,并存储在一个新的数组中。
  2. 对新数组进行排序,确保时间戳按照升序排列。
  3. 遍历排序后的数组,检查相邻的时间戳是否连续。如果连续,则将它们视为一个连续的日期时间段。
  4. 如果存在连续的日期时间段,记录下起始时间和结束时间,并将它们存储在一个结果数组中。
  5. 返回结果数组,其中包含所有连续的日期时间段。

以下是一个示例代码:

代码语言:txt
复制
function findContinuousDateTime($array) {
    $timestamps = array();
    foreach ($array as $datetime) {
        $timestamp = strtotime($datetime);
        if ($timestamp !== false) {
            $timestamps[] = $timestamp;
        }
    }
    
    sort($timestamps);
    
    $result = array();
    $start = null;
    $end = null;
    
    foreach ($timestamps as $timestamp) {
        if ($start === null) {
            $start = $timestamp;
            $end = $timestamp;
        } else {
            if ($timestamp - $end === 86400) { // 86400秒等于一天
                $end = $timestamp;
            } else {
                $result[] = array(
                    'start' => date('Y-m-d H:i:s', $start),
                    'end' => date('Y-m-d H:i:s', $end)
                );
                $start = $timestamp;
                $end = $timestamp;
            }
        }
    }
    
    if ($start !== null && $end !== null) {
        $result[] = array(
            'start' => date('Y-m-d H:i:s', $start),
            'end' => date('Y-m-d H:i:s', $end)
        );
    }
    
    return $result;
}

$array = array(
    '2022-01-01 12:00:00',
    '2022-01-02 12:00:00',
    '2022-01-03 12:00:00',
    '2022-01-05 12:00:00',
    '2022-01-06 12:00:00',
    '2022-01-07 12:00:00',
    '2022-01-09 12:00:00',
    '2022-01-10 12:00:00'
);

$result = findContinuousDateTime($array);

foreach ($result as $datetime) {
    echo "连续的日期时间段:{$datetime['start']} - {$datetime['end']}\n";
}

这段代码将输出以下结果:

代码语言:txt
复制
连续的日期时间段:2022-01-01 12:00:00 - 2022-01-03 12:00:00
连续的日期时间段:2022-01-05 12:00:00 - 2022-01-07 12:00:00
连续的日期时间段:2022-01-09 12:00:00 - 2022-01-10 12:00:00

在这个例子中,我们假设输入的数组中包含了一些日期时间字符串。代码首先将这些字符串转换为时间戳,并进行排序。然后,它遍历排序后的时间戳数组,检查相邻的时间戳是否连续。如果连续,则将它们视为一个连续的日期时间段,并记录下起始时间和结束时间。最后,代码返回一个结果数组,其中包含了所有连续的日期时间段。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何查找递增连续数组缺失数字

在一个长度为n递增数组,数组中元素范围是0 ~ n-1,如何在这个递增连续数组查找缺失数字? 分析下: 1. 排序数组搜索算法,首先想到就是二分法查找 2....丢失数字之前左子数组:nums[m] = m, 需要找到第一个nums[m] > m数组索引值即可....移动边界指针 Nums[3] = 3,左指针右移,同时,已经知道了m指针位置,指针值与元素值是相同,查找值一定是在[m+1,r]区间中,所以左指针移动到m+1位置....继续计算m指针值,m= (l + r)/2=(5 + 5)/2=5; 这时发现左,,右三指针都指向了num[4], 但4并不是我们想要值....综上,对于有序数组查找,一般都会使用二分法查找.在查找数据时候,注意左右边界指针移动.以及遍历标记(l<=j)即可.

3.1K21
  • php 数组根据值找key,数组查找key对应值 – key

    $arr = [5=>’name’,8=>’age’,10=>’city’]; $num = ‘5,10’; $str = ”; //如何查找5,10对应值,就是输出’name,city’,除了foreach...=value; } } 回复内容: php$arr = [5=>’name’,8=>’age’,10=>’city’]; $num = ‘5,10’; $str = ”; //如何查找5,10对应值,...除了楼上给出分解num后通过array_key_exists在arr数组寻找相应值后在implode到一起之外。...名称 * @param string $value 设置值 * @param int $timeOut 时间 0表示无过期时间 …Hash表功能。...PHP可以模拟实现Hash表增删改查。通过对key映射到数组一个位置来访问。映射函数叫做Hash函数,存放记录数组称为Hash表。 Hash函数把任意长度和类型key转换成固定长度输出。

    11.6K20

    MySQL 日期时间类型

    日期时间类型包含以下几种数据类型: DATE TIME DATETIME TIMESTAMP YEAR 各类型都有具体取值范围,超出或非法其他值时,MySQL 会回退到 0。...所以,为了避免不可预测结果,使用时还是指定全一些。 在需要使用数字语境下,MySQL 会将日期时间自动转成数字。同理,在需要日期时间相关操作语境下,会尝试将数字解析成日期时间。...但这种情况下就无法日期相关操作获得到准确结果,比如使用 DATE_SUB() 或 DATE_ADD() 函数时。...在存储时会根据当前时区转成 UTC(universal time zone) 存储,查询时也会根据时区 UTC 转换到具体时间。对于支持多语及国际化全球部署应用来说,显得尤为方便。...关于日期时间需要注意点: 因为 MySQL 支持比较宽松格式来设置日期时间,所以理论上你可以用你想用值来做为数字之间分界符,但使用时需要关注其解析原理。

    6.8K20

    查找数组重复数字

    题目来源于《剑指Offer》面试题3:找出数组重复数字。   // 题目:在一个长度为n数组所有数字都在0到n-1范围内。...数组某些数字是重复,但不知道有几个数字重复了,   // 也不知道每个数字重复了几次。请找出数组任意一个重复数字。...此处介绍自己一个做法,以空间换时间,通过新建数组来实现快速查找,具体做法是新建长度为length数组newArray,初始化值为-1;将numbers数组值依次作为newArray下标和对应值为...: (输出) 数组一个重复数字 // 返回值: // true - 输入有效,并且数组存在重复数字 // false - 输入无效,或者数组没有重复数字...numbers, sizeof(numbers) / sizeof(int), duplications, sizeof(duplications) / sizeof(int), true); } // 数组存在多个重复数字

    4K60

    php处理时间戳解决时间月份、日期前带不带0问题

    php处理时间戳解决时间月份、日期前带不带0问题 解决PHP时间月份、日期前带不带0问题 有的时候网页输出日期时间,月份和日期前有个0,总感觉是多余,今天我们就分享关于PHP时间月份和日期前面显示...2、获取时间戳方法time()、strtotime() 这两个方法,都可以获取phpunix时间戳,time()为直接获取得到,strtotime(time, now)为将时间格式转为时间戳, 3、...)(时间戳转换为日期格式方法) echo date(‘Y’).’年’.date(‘m’).’月’.date(‘d’).’日’,输出结果:2012年3月22日 举例就这几个,只是格式变通而已,下面是格式各个字母含义...5、php获取当前时间毫秒数 php本身没有提供返回毫秒数函数,但提供了microtime()方法,它会返回一个Array,包含两个元素:一个是秒数、一个是小数表示毫秒数,我们可以通过此方法获取返回毫秒数...未经允许不得转载:肥猫博客 » php处理时间戳解决时间月份、日期前带不带0问题

    8.8K50

    如何在clickhouse实现连续时间,比如连续

    所以我们一般情况下要么通过sql来实现连续时间查询,比如连续天,要么通过程序处理时间,然后再循环数据按照某一天匹配之后返回结果给前端。...下面我们这里分享一下在clickhouse如何实现连续时间连续天 我们在clickhouse实现连续时间首先要学习一下range,arrayMap,arrayJoin这三个函数使用。...range 语法: range([start, ] end [, step]) start:起始值 end:结束值 step:步长 案例:5开始到10结束,步长为2值得输出: 执行命令:select...,一般表示arr1里面值按照什么标准执行 arr1:数组 案例:求第一个数组2倍,第二个数组5倍 执行命令:select arrayMap((x,y)->(x*2,y*5),[1,34],[8,5]...实现2021.1.1到2021.1.10连续时间,我们首先需要用range把数组自增,然后通过arrayMap转换成对应时间,然后通过arrayJoin进行转换成列。

    2.3K50

    解决PHP时间月份、日期前带不带0问题

    php处理时间戳解决时间月份、日期前带不带0问题 解决PHP时间月份、日期前带不带0问题 有的时候网页输出日期时间,月份和日期前有个0,总感觉是多余,今天我们就分享关于PHP时间月份和日期前面显示...2、获取时间戳方法time()、strtotime() 这两个方法,都可以获取phpunix时间戳,time()为直接获取得到,strtotime(time, now)为将时间格式转为时间戳, 3、...)(时间戳转换为日期格式方法) echo date(‘Y’).’年’.date(‘m’).’月’.date(‘d’).’日’,输出结果:2012年3月22日 举例就这几个,只是格式变通而已,下面是格式各个字母含义...5、php获取当前时间毫秒数 php本身没有提供返回毫秒数函数,但提供了microtime()方法,它会返回一个Array,包含两个元素:一个是秒数、一个是小数表示毫秒数,我们可以通过此方法获取返回毫秒数...原文链接:https://blog.csdn.net/starrykey/article/details/52572676 未经允许不得转载:肥猫博客 » 解决PHP时间月份、日期前带不带0问题

    6.5K30

    Java时间日期操作

    参考链接: Javadate after()方法 Java时间日期操作  相关类  Date  java.util.Date  很多方法已经过时,现在主要用于在Calendar类和String...主要方法:  Date    getTime()           返回一个表示此 Calendar 时间值(历元至现在毫秒偏移量) Date 对象。...- 日历字段解析  在计算日历字段日期时间时,可能没有足够信息用于计算(例如只有年和月,但没有日),或者可能有不一致信息( 例如 “Tuesday, July 15, 1996”(格林威治时间...Calendar 将解析日历字段值,以便用以下方式确定日期时间。  如果日历字段值存在任何冲突,则 Calendar 将为最近设置日历字段提供优先权。以下是日历字段默认组合。...在日期时间模式字符串,未加引号字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 被解释为模式字母,用来表示日期时间字符串元素。文本可以使用单引号 (‘) 引起来,以免进行解释。”””

    3.4K20

    Java 日期时间处理!

    前言 学习 Java 过程,难免会跟时间处理打交道,那我们今天就来看看,Java 中最常见一些日期时间处理知识。...以秒为单位浮点数,小数点后表示零点几秒; 标准库 API 主要提供了两套处理时间日期 API: 定义在 java.util ,主要包括 Date、Calendar、TimeZone 这几个类;...API,主要涉及类型: 本地日期时间:LocalDateTime、LocalDate、LocalTime 带时区日期时间:ZonedDateTime 时刻:Instant 时区:ZoneId...时间:HH:mm:ss 带毫秒时间:HH:mm:ss.SSS 日期时间:yyyy-MM-dd T HH:mm:ss 带毫秒日期时间:yyyy-MM-dd T HH:mm:ss.SSS 对日期时间进行调整...private final int nanos; } LocalDateTie、ZoneId、Instant、ZonedDateTime、long 之间相互转换关系; 总结 以上就是 Java 关于日期时间相关学习笔记了

    2.1K20

    Java 时间日期 API

    其实 Java 里日期时间相关 API 一直为世猿诟病,不仅在于它设计分上工不明确,往往一个类既能处理日期又能处理时间,很混乱,还在于某些年月日期数值映射存储反人类,例如:0 对应月份一月,11...Date 这个类以前真的扮演过很多角色,源码就可以看出来,有可以操作时刻方法,有可以操作年月日方法,甚至它还能管时区。可以说,日期时间相关操作有它一个人就足够了。...Calendar 也定义了很多静态常量和一些属性数组: public final static int ERA = 0; public final static int YEAR = 1; public...有关日期所有相关信息都存储在属性数组,而这些静态常量值往往表示就是一个索引值,通过 get 方法,我们传入一个属性索引,返回得到该属性值。...DateFormat 格式化转换 我们之前一个例子可以看到,Calendar 想要输出一个预期格式日期信息是很麻烦,需要自己手动拼接。

    2.2K70

    给我 O(1) 时间,我能查找删除数组任意元素

    这写问题一个技巧点在于,如何结合哈希表和数组,使得数组删除和查找操作时间复杂度稳定在 O(1)? 下面来一道道看。...我们先来分析一下:对于插入,删除,查找这几个操作,哪种数据结构时间复杂度是 O(1)? HashSet肯定算一个对吧。...根据上面的分析,对于getRandom方法,如果想「等概率」且「在 O(1) 时间」取出元素,一定要满足:底层用数组实现,且数组必须是紧凑。...这样我们就可以直接生成随机数作为索引,数组取出该随机索引对应元素,作为随机元素。 但如果用数组存储元素的话,插入,删除时间复杂度怎么可能是 O(1) 呢? 可以做到!...对数组尾部进行插入和删除操作不会涉及数据搬移,时间复杂度是 O(1)。 所以,如果我们想在 O(1) 时间删除数组某一个元素val,可以先把这个元素交换到数组尾部,然后再pop掉。

    1.4K10
    领券