Adding and Subtracting Time

Move dates forward and back with addDays, subMonths and friends.

Syntax$carbon->addDays(10)->subHours(2);

Carbon makes date math effortless. Every unit has an add and sub method:

  • addDays() / subDays()
  • addMonths() / subMonths()
  • addHours() / subHours()

These return a new adjusted Carbon instance so you can chain them.

Example

Try it yourself
Loading editor…
Press Run to execute the code.

When to use it

  • A subscription manager adds 30 days to now() with addDays(30) to compute the next billing date when a user subscribes to a monthly plan.
  • An event countdown subtracts the current time from the event date using diffInHours() to display a live countdown timer on the page.
  • A scheduler calls subWeeks(1) on a reminder date to send a one-week warning email before the deadline.

More examples

Add and subtract time units

Carbon provides addX() and subX() methods for every time unit (seconds through years), each returning a new instance.

Example · php
use Carbon\Carbon;

$now = Carbon::now();

$now->addDays(30);      // 30 days in the future
$now->subHours(6);      // 6 hours in the past
$now->addMonths(3);     // 3 months forward
$now->subYears(1);      // one year ago

Compute a subscription expiry date

Uses addMonths() to compute the expiry timestamp based on the chosen plan, storing both the start and end dates.

Example · php
use Carbon\Carbon;

public function subscribe(User $user, string $plan): void
{
    $duration = match ($plan) {
        'monthly'  => 1,
        'yearly'   => 12,
        default    => 1,
    };

    $user->update([
        'subscribed_at' => now(),
        'expires_at'    => now()->addMonths($duration),
    ]);
}

Clamp a date to start/end of period

startOfX() and endOfX() snap a Carbon instance to the precise beginning or end of a day, month, or other period.

Example · php
use Carbon\Carbon;

$dt = Carbon::parse('2025-03-14 14:23:45');

$dt->startOfDay();    // 2025-03-14 00:00:00
$dt->endOfDay();      // 2025-03-14 23:59:59
$dt->startOfMonth();  // 2025-03-01 00:00:00
$dt->endOfMonth();    // 2025-03-31 23:59:59

Discussion

  • Be the first to comment on this lesson.