我正在嘗試以下操作:我正在開發一個函數來比較以下格式的兩個日期:$date = "Mon Sep 14 2020 02:07:25 GMT+0000 (Coordinated Universal Time)";該函數如下(它有一些用于我的測試的額外代碼):private function isMoreRecent($newVariation, $oldVariation) { // dates for testing: $newVariation = "Mon Sep 14 2020 02:07:25 GMT+0000 (Coordinated Universal Time)"; $oldVariation = "Sun Sep 13 2020 12:02:49 GMT+0000 (Coordinated Universal Time)"; // dates for testing: // date: 2020-09-14 02:07:25.0 UTC (+00:00) $newVariationFormat = $this->reformatDate($newVariation); // date: 2020-09-13 12:02:49.0 UTC (+00:00) $oldVariationFormat = $this->reformatDate($oldVariation); if ($newVariationFormat->toDateString() < $oldVariationFormat->toDateString()) { dd('holaaa'); return true; } return false;}“reformatDate”是將字符串日期轉換為 Carbon 類型的函數,如下所示:private function reformatDate($date) { $month = substr($date, 4, 3); $month = intval($this->getMonthNumber($month)); $day = intval(substr($date, 8, 2)); $year = intval(substr($date, 11, 4)); $hour = substr($date, 16, 2); $minutes = substr($date, 19, 2); $seconds = substr($date, 22, 2); return Carbon::create($year, $month, $day, $hour, $minutes, $seconds);}其中 getMonthNumber():private function getMonthNumber($month) { $monthKeyValues = [ '1' => 'Jan', '2' => 'Feb', '3' => 'Mar', '4' => 'Apr', '5' => 'May', '6' => 'Jun', '7' => 'Jul', '8' => 'Ago', '9' => 'Sep', '10' => 'Oct', '11' => 'Nov', '12' => 'Dec', ]; return array_search($month, $monthKeyValues);}
2 回答

湖上湖
TA貢獻2003條經驗 獲得超2個贊
最近的日期大于較早的日期。所以你必須改變比較的方向。
為什么不直接比較 Carbon 對象而不是將它們轉換為字符串?嘗試這個
if ($newVariationFormat->greaterThan($oldVariationFormat))
前面的代碼通常應該返回 true;

LEATH
TA貢獻1936條經驗 獲得超7個贊
Carbon 對象還可以與標準運算符進行比較:
if ($newVariationFormat > $oldVariationFormat)
并且您重新格式化Date可以縮短:
private function reformatDate($date) { return Carbon::parse(preg_replace('/\s+\(.*\)$/', '', $date)); }
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消