Diff in calendar days with PHP Carbon

Viewed 2729

I want to get difference in calendar days. I want to spot dates that correspond to today, yesterday and tomorrow with relative numbers (0, -1, 1).

Here are some basic tests:

\Carbon\Carbon::now() // Out: 2017-08-08 09:16 ...

// diffInDays()

\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(1)) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->tomorrow()) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(23)) // output: 0
\Carbon\Carbon::now()->diffInDays(\Carbon\Carbon::now()->addHour(25)) // output: 1


// diffInWeekDays()

\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(1)) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->tomorrow()) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(23)) // output: 1
\Carbon\Carbon::now()->diffInWeekDays(\Carbon\Carbon::now()->addHour(25)) // output: 2

Both methods seem to count days by periods of 24 hrs. What I would like to get with "someMethod":

\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(1)) // output: 0
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->tomorrow()) // output: 1
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(23)) // output: 1
\Carbon\Carbon::now()->someMethod(\Carbon\Carbon::now()->addHour(25)) // output: 1

Is there any way to get my needed output within Carbon?

I've created a related issue in the Carbon repository here: https://github.com/briannesbitt/Carbon/issues/990

Any comment or help will be much appreciated!

2 Answers

Check this out:

$date = <some_date>;

\Carbon\Carbon::now()->startOfDay()->diffInDays($date, false);
Related