12 小时时钟数组排序

12 Hour Clock Array Sort

我一直在 Google 上搜索,但找不到任何根据 12 小时时钟格式对数组进行排序的解决方案。通过将其转换为 timestamps 然后使用 krsort,我能够对 24 小时制进行排序。但是我不确定如何对 12 小时制进行排序..

以下是场景示例..

未排序

array(
    '0' => '03:00 AM',
    '1' => '12:00 AM',
    '2' => '03:00 PM',
    '3' => '01:00 AM',
    '4' => '04:00 PM',
    '5' => '02:00 AM',
    '6' => '12:00 PM',
    '7' => '04:00 AM',
    '8' => '01:00 PM',
    '9' => '02:00 PM'
);

已排序

array(
    '0' => '12:00 AM',
    '1' => '01:00 AM',
    '2' => '02:00 AM',
    '3' => '03:00 AM',
    '4' => '04:00 AM',
    '5' => '12:00 PM',
    '6' => '01:00 PM',
    '7' => '02:00 PM',
    '8' => '03:00 PM',
    '9' => '04:00 PM'
);

代码显然会动态运行,所以无论数组中给出什么时间,它都会在 ascending orderdescending order

中排序为 12 小时制

strtotime will accept that format. So you can use a custom sort (usort) 带有基于 strtotime 的回调。

usort($array, function($a, $b) {
   return (strtotime($a) > strtotime($b));
});