Laravel -碳纤维:如何比较没有时区两个日期(字符串)?

uplii1fm  于 2022-12-01  发布在  其他
关注(0)|答案(2)|浏览(101)

我在laravel中比较两个日期时遇到了麻烦。在我的应用程序中,我有一个日期字段可以比较:

// example
$order_date = Carbon::now()->format('Y-m-d') // returns "2022-11-30"
$now = Carbon::now() // returns an object with date at the bottom date: 2022-11-30 15:51:58.207817 Europe/Rome (+01:00)

我需要检查以下条件:

if ($order_date->lessThan($now)) {
     return redirect()->back()->with('error', 'Message error');
   }

问题是我只需要比较日期,而不是时间。所以我得到了这个错误:
对字符串调用成员函数lessThan()
为了避免这个错误,我做了一些如下的更改:

$date = Carbon::parse($order_date)->addHour(00)->addMinute(00)->addSeconds(00);
$now = Carbon::today()

通过这种方式,两个对象都返回此日期:

^ Carbon\Carbon @1669762800 {#1317 ▼
  #endOfTime: false
  #startOfTime: false
  #constructedObjectId: "00000000000005250000000000000000"
  #localMonthsOverflow: null
  #localYearsOverflow: null
  #localStrictModeEnabled: null
  #localHumanDiffOptions: null
  #localToStringFormat: null
  #localSerializer: null
  #localMacros: null
  #localGenericMacros: null
  #localFormatFunction: null
  #localTranslator: null
  #dumpProperties: array:3 [▶]
  #dumpLocale: null
  #dumpDateProperties: null
  date: 2022-11-30 00:00:00.0 Europe/Rome (+01:00)
}

^ Carbon\Carbon @1669762800 {#1243 ▼
  #endOfTime: false
  #startOfTime: false
  #constructedObjectId: "00000000000004db0000000000000000"
  #localMonthsOverflow: null
  #localYearsOverflow: null
  #localStrictModeEnabled: null
  #localHumanDiffOptions: null
  #localToStringFormat: null
  #localSerializer: null
  #localMacros: null
  #localGenericMacros: null
  #localFormatFunction: null
  #localTranslator: null
  #dumpProperties: array:3 [▶]
  #dumpLocale: null
  #dumpDateProperties: null
  date: 2022-11-30 00:00:00.0 Europe/Rome (+01:00)
}

正如你所看到的,我可以使用lessThan()方法,它似乎是好的。
但是有没有其他更简单的方法来做这件事呢?比较两个日期字符串,比如“2022-11-30”和“2022-11-29”?

apeeds0o

apeeds0o1#

对于您的情况,可以使用createFromFormat

$dateOne = Carbon::createFromFormat('Y-m-d', '2022-11-30');
$dateTwo = Carbon::createFromFormat('Y-m-d', '2022-11-29');

$result = $dateOne->lessThan($dateTwo); //returns false
bmp9r5qi

bmp9r5qi2#

字符串可以在纯PHP中进行比较

if ("2022-12-05" > "2022-11-29") {
    echo "yes";
}

相关问题