19

Assuming I have the following code:

$now = Carbon::now();
$dateTimeObject = Carbon::parse('2017-07-20 10:16:34');

how do I get the diff between the dates only, ignoring the time factor?

So, if $now is 2017-07-27 09:11:12, and the date in the $dateTimeObject is 2017-07-20 -- the difference would be 7.

I need it to make sure the results of a specific operation are being stored in the database only once per day.

Note:

I tried the diffInDays() method, but it returns 0 if the values are e.g. 2016-10-12 23:56:43 and 2016-10-13 02:01:53 - so, close to midnight and at night.

lesssugar
  • 15,486
  • 18
  • 65
  • 115

2 Answers2

43

Do something like this:

$now = Carbon::now()->startOfDay();
$dateTimeObject = Carbon::parse('2017-07-20 10:16:34')->startOfDay();

And now use diffInDays().

Perfect Square
  • 1,368
  • 16
  • 27
3

Carbon::isSameDay method will check if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).

$dateTimeObject = Carbon::parse('2017-07-20 10:16:34');

$is_same = $dateTimeObject->isSameDay();
John Magnolia
  • 16,769
  • 36
  • 159
  • 270