PHP 中如何对时间戳中的时间进行分组而无视日期

描述


数据如下

id, year, time, type, s, datetime
88,2019/07/22,09:39,0,127,2019/7/22 9:39
89,2019/07/23,09:54,0,128,2019/7/23 9:54
...
  • 根据time或者datetime的时间部分进行分组
  • 0:00 ~ 1:00, 1:00~2:00, ... (这样分组)
  • 不管日期

我看了Carbon库好像也是对日期处理得比较多,对时间的处理貌似并不是很多,望知道如何处理的兄弟指点迷津。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

我这边处理的话应该是这样,用laravel不是很久,可能有更好的方案

$collect = collect([
    [
        'id'       => 1,
        'datetime' => '2019-10-01 01:00:00'
    ],
    [
        'id'       => 2,
        'datetime' => '2019-10-01 02:00:00'
    ],
    [
        'id'       => 3,
        'datetime' => '2019-10-01 03:00:00'
    ]
]);
$test = $collect->transform(function($item) {
    return array_merge($item, [
        'time' => Carbon::parse($item['datetime'])->hour
    ]);
})->groupBy('time');
dd($test);
4年前 评论
Rein (楼主) 4年前
讨论数量: 3

我这边处理的话应该是这样,用laravel不是很久,可能有更好的方案

$collect = collect([
    [
        'id'       => 1,
        'datetime' => '2019-10-01 01:00:00'
    ],
    [
        'id'       => 2,
        'datetime' => '2019-10-01 02:00:00'
    ],
    [
        'id'       => 3,
        'datetime' => '2019-10-01 03:00:00'
    ]
]);
$test = $collect->transform(function($item) {
    return array_merge($item, [
        'time' => Carbon::parse($item['datetime'])->hour
    ]);
})->groupBy('time');
dd($test);
4年前 评论
Rein (楼主) 4年前
ALMAS

eloquent有whereTime方法看看是不是你想要的

4年前 评论
Rein (楼主) 4年前
pardon110

如果你给出的所有数据皆如此只要时间部分,在linux环境下一条cut命令就能解决。

4年前 评论
Rein (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!