php - 创建一个二维数组,该数组根据每个 dateTime 对象之间的时间间隔对一组 dateTime 对象进行分组
问题描述
我必须创建一个程序,从给定的表演者那里获取所有节目,并将他们的节目分组为“访问”,这将被定义为在连续日期发生的一组节目。下面的 dateTime 对象是我为了这篇文章的简洁而拼接的一个更大列表的一个子集。
Array (
[0] => DateTime Object
(
[date] => 2017-04-22 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
[1] => DateTime Object
(
[date] => 2017-04-21 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
[2] => DateTime Object
(
[date] => 2015-04-18 12:45:49.000000
[timezone_type] => 3
[timezone] => America/Denver
)
)
我有一个日期时间对象列表,我需要一个算法,它会根据每个日期之间的间隔大小将日期时间对象放入一个二维数组中。如果两个 datetime 对象之间的间隔大于 1 天,则在较大的数组中创建一个数组。如果间隔小于 1 天,则将 datetime 对象添加到当前设置指针的数组中。下面的算法从之前的三个 dateTime 对象创建了 dateTime 间隔多维数组。
$incrementKey = 0;
foreach ($datesIntervalArray as $d) {
if ($d->days > 1) {
$incrementKey++;
}
$groupsOfVisits[$incrementKey][] = $d;
Array
(
[0] => Array
(
[0] => DateInterval Object (1/1/2017)
(
[days] => 1
)
[1] => DateInterval Object (1/2/2017)
(
[days] => 1
)
[1] => Array
(
[0] => DateInterval Object (2/1/2017)
(
[days] => 1
)
)
所以我的问题是如何获取这些信息并以第二个数组的格式(使用 dateInterval 对象)创建一个数组,但使用来自第一个数组(dateTime)的信息?我一直无法弄清楚如何从 dateInterval 转换回 dateTime。有没有办法做到这一点而不必首先转换为 dateInterval ?我觉得我很亲密,但在这方面花了很多时间。提前致谢!
解决方案
推荐阅读
- .net - .Net TimeZoneInfo.GetUtcOffset 如何工作?
- hyperledger-fabric - HyperLedger composer v0.20.8 启动业务网络时报错
- android - 是否可以在我们的应用程序活动中调用另一个应用程序?
- sql - 连接和计算来自不同表的行
- javascript - 使用 apollo-client + firebase auth 刷新令牌
- php - Ublaboo/Datagrid - InlineAdd 行被隐藏
- excel-formula - 引用相交的 Excel 总和
- java - 如何将响应式 ClientResponse 转换为 String?
- sql - 合并重复组的日期范围
- node.js - 我需要帮助使用 ims-lti 节点插件将成绩从提供者发送到消费者