public function diffForHumans(Carbon $other = null, $absolute = false)
    {
        $isNow = $other === null;

        if ($isNow) {
            $other = static::now($this->tz);
        }

        $diffInterval = $this->diff($other);

        switch (true) {
            case ($diffInterval->y > 0):
                $unit = 'year';
                $delta = $diffInterval->y;
                break;

            case ($diffInterval->m > 0):
                $unit = 'month';
                $delta = $diffInterval->m;
                break;

            case ($diffInterval->d > 0):
                $unit = 'day';
                $delta = $diffInterval->d;
                if ($delta >= self::DAYS_PER_WEEK) {
                    $unit = 'week';
                    $delta = floor($delta / self::DAYS_PER_WEEK);
                }
                break;

            case ($diffInterval->h > 0):
                $unit = 'hour';
                $delta = $diffInterval->h;
                break;

            case ($diffInterval->i > 0):
                $unit = 'minute';
                $delta = $diffInterval->i;
                break;

            default:
                $delta = $diffInterval->s;
                $unit = 'second';
                break;
        }

        if ($delta == 0) {
            $delta = 1;
        }

        $txt = $delta . ' ' . $unit;
        $txt .= $delta == 1 ? '' : 's';

        if ($absolute) {
            return $txt;
        }

        $isFuture = $diffInterval->invert === 1;

        if ($isNow) {
            if ($isFuture) {
                return $txt . ' from now';
            }

            return $txt . ' ago';
        }

        if ($isFuture) {
            return $txt . ' after';
        }

        return $txt . ' before';
    }
public function diffForHumans(Carbon $other = null, $absolute = false)
    {
        $isNow = $other === null;

        if ($isNow) {
            $other = static::now($this->tz);
        }

        $diffInterval = $this->diff($other);

        switch (true) {
            case ($diffInterval->y > 0):
                $unit = 'year';
                $delta = $diffInterval->y;
                break;

            case ($diffInterval->m > 0):
                $unit = 'month';
                $delta = $diffInterval->m;
                break;

            case ($diffInterval->d > 0):
                $unit = 'day';
                $delta = $diffInterval->d;
                if ($delta >= self::DAYS_PER_WEEK) {
                    $unit = 'week';
                    $delta = floor($delta / self::DAYS_PER_WEEK);
                }
                break;

            case ($diffInterval->h > 0):
                $unit = 'hour';
                $delta = $diffInterval->h;
                break;

            case ($diffInterval->i > 0):
                $unit = 'minute';
                $delta = $diffInterval->i;
                break;

            default:
                $delta = $diffInterval->s;
                $unit = 'second';
                break;
        }

        if ($delta == 0) {
            $delta = 1;
        }

        $txt = $delta . ' ' . $unit;
        $txt .= $delta == 1 ? '' : 's';

        if ($absolute) {
            return $txt;
        }

        $isFuture = $diffInterval->invert === 1;

        if ($isNow) {
            if ($isFuture) {
                return $txt . ' from now';
            }

            return $txt . ' ago';
        }

        if ($isFuture) {
            return $txt . ' after';
        }

        return $txt . ' before';
    }
public function diffForHumans ( Carbon $ other = null , $ absolute = false ) { $ isNow = $ other === null ; if ( $ isNow ) { $ other = static :: now ( $ this -> tz ) ; } $ diffInterval = $ this -> diff ( $ other ) ; switch ( true ) { case ( $ diffInterval -> y > 0 ) : $ unit = 'year' ; $ delta = $ diffInterval -> y ; break ; case ( $ diffInterval -> m > 0 ) : $ unit = 'month' ; $ delta = $ diffInterval -> m ; break ; case ( $ diffInterval -> d > 0 ) : $ unit = 'day' ; $ delta = $ diffInterval -> d ; if ( $ delta >= self :: DAYS_PER_WEEK ) { $ unit = 'week' ; $ delta = floor ( $ delta / self :: DAYS_PER_WEEK ) ; } break ; case ( $ diffInterval -> h > 0 ) : $ unit = 'hour' ; $ delta = $ diffInterval -> h ; break ; case ( $ diffInterval -> i > 0 ) : $ unit = 'minute' ; $ delta = $ diffInterval -> i ; break ; default : $ delta = $ diffInterval -> s ; $ unit = 'second' ; break ; } if ( $ delta == 0 ) { $ delta = 1 ; } $ txt = $ delta . ' ' . $ unit ; $ txt .= $ delta == 1 ? '' : 's' ; if ( $ absolute ) { return $ txt ; } $ isFuture = $ diffInterval -> invert === 1 ; if ( $ isNow ) { if ( $ isFuture ) { return $ txt . ' from now' ; } return $ txt . ' ago' ; } if ( $ isFuture ) { return $ txt . ' after' ; } return $ txt . ' before' ; }
Get the difference in a human readable format.

When comparing a value in the past to default now:
1 hour ago
5 months ago

When comparing a value in the future to default now:
1 hour from now
5 months from now

When comparing a value in the past to another value:
1 hour before
5 months before

When comparing a value in the future to another value:
1 hour after
5 months after

@param Carbon $other
@param bool   $absolute removes time difference modifiers ago, after, etc

@return string
Get the difference in a human readable format .