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

Gustavo Straube picture Gustavo Straube · Aug 22, 2017 · Viewed 15.2k times · Source

I'm using Carbon to manipulate dates I retrieved from my MySQL database. I have dates like the following:

  • 2017-07-19 00:00:00
  • 2017-06-26 15:27:57

As you can see, the first is the start of a day. When displaying dates like that, I would like to omit the time part. I know I can use a different format for each one. For example:

  • F d Y for dates without time.
  • F d Y g:ia for dates with time.

What I couldn't accomplish is a simple way to check if a date has a time part to apply one format or the other. Must I use individual getters to check the hour, minute and second?

Answer

aynber picture aynber · Aug 22, 2017

If you just want to check if it's the start of the day, then it's fairly easy to check with Carbon's 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
}