如何检查 Carbon 日期对象是否在一天的开始?

How to check if a Carbon date object is at the start of day?

我正在使用 Carbon 来处理从 MySQL 数据库中检索到的日期。我有如下日期:

如您所见,第一个是一天的开始。当显示这样的日期时,我想省略时间部分。我知道我可以为每个人使用不同的格式。例如:

我无法完成的是检查日期是否有时间部分来应用一种格式或另一种格式的简单方法。我必须使用单独的 getter 来检查小时、分钟和秒吗?

如果您只想检查今天是否是一天的开始,那么使用 Carbon 的 startOfDay() modifier and a comparison:

可以很容易地进行检查
$date = Carbon::now(); // or whatever you're using to set it
$start = $date->copy()->startOfDay();
if($date->eq($start)) {
    // do your formatting here
}

您可以使用 Carbon 对象的时间戳减去 "today" 的时间戳(即 yyyy-mm-dd 0000:00:00),它会给您从 00:00 到那个日期:

$secondsPassed = $carbonObject->timestamp - $carbonObject->copy()->startOfDay()->timestamp;
if ($secondsPassed > 8 * 60 * 60) {
    // time is passed 08:00 am
} 

与此同时,它更容易。使用 is....() 方法(参见 carbon comparison),如下所示:

$date = Carbon::now();
if($date->isStartOfDay()) {     // check if hour is 00:00:00
    // whatever
}