2 回答

TA貢獻1829條經驗 獲得超7個贊
仔細看字符串 $a = date('dmY H:i', strtotime($a));
strtotime($a)正在嘗試將字符串轉換為時間戳。由于您有自定義日期格式,因此該字符串09082020 00:00將轉換為false.
之后,date('dmY H:i', false)就會返回01011970 00:00。這就是排序不起作用的原因。
我會建議使用DateTime::createFromFormat.
usort($items, function ($a, $b) {
$a = DateTime::createFromFormat('dmY H:i', $a);
$b = DateTime::createFromFormat('dmY H:i', $b);
if ($a == $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
});

TA貢獻1719條經驗 獲得超6個贊
在這一部分
date('dmY H:i', strtotime($a));
date您正在嘗試使用格式創建,但您設置了strtotime()返回 Unix 時間戳 (int) 的值。所以你可能正在尋找類似的東西:
\DateTime::createFromFormat('dmY H:i', $a);
所以它可能是這樣的:
function orderDates($items) {
//Sort them. Latest one first
usort($items, function ($a, $b) {
$a = \DateTime::createFromFormat('dmY H:i', $a);
$b = \DateTime::createFromFormat('dmY H:i', $b);
if ($a == $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
});
return $items;
}
- 2 回答
- 0 關注
- 184 瀏覽
添加回答
舉報