A simple PHP API extension for DateTime.

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();

// Carbon embed 137 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');

$officialDate = Carbon::now()->toRfc2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

// Want to know more about diffForHumans? Double-click on the method name!

Getting Started

1.x is compatible with PHP 5.3+.
2.x version requires PHP 7.1.8+.

Installing

The easiest and recommended method to install Carbon is via composer.

Use the following command to install with composer.

$ composer require nesbot/carbon

This will automatically get the latest version and configure a composer.json file.

<?php
require 'vendor/autoload.php';

use Carbon\Carbon;

printf("Now: %s", Carbon::now());

If you wish you can create the following composer.json file and run composer install to install it.

{
    "require": {
        "nesbot/carbon": "^2.3"
    }
}

Carbon 2 is officially supported by Laravel since the version 5.8, if you want to use it on a lower version, you can follow those steps:

Set explicitly the Carbon version and add the adapter in your composer.json:

{
    "require": {
        "nesbot/carbon": "2.3.0 as 1.34.0"
        "kylekatarnls/laravel-carbon-2": "^1.0.0"
    }
}

Use 1.25.0 alias for Laravel 5.6, 1.34.0 for other versions as each version of Laravel has its own range of Carbon compatibility, you have to take 2.3.0 as the real used version, then pick an alias among versions Laravel supports. You may have other dependencies with other Carbon restrictions. If so, we cannot ensure Carbon 2 will works with them as Carbon 1 did, but you can still try an other version alias. To be sure an alias will be compatible with all of your current dependencies, you can choose the version of Carbon you have before upgrading to Carbon 2 using composer show nesbot/carbon.

Then update your dependencies by running.

$ composer update

Why are you not using composer?

Download the last release (or any other you want) here: releases.

Release package is the asset named Carbon-x.y.z.zip where x.y.z is the version number.

Extract the zip in a directory in your project, then require the autoload.php file to make any Carbon class available:

<?php
require 'path/to/Carbon/autoload.php';

use Carbon\Carbon;
use Carbon\CarbonInterval;

printf("Now: %s", Carbon::now());

printf("1 day: %s", CarbonInterval::day()->forHumans());

Those packages contain symfony/translation to make diffForHumans method vailable in different languages.

Install with composer is still a better option since it allows you to get the symfony/translation (and possible future dependencies) version that suit the best your PHP version and keep the whole think up-to-date via composer update command.

Learn More

Looks good so far. What do I do next? Read the API docs.

Author

Brian Nesbitt
http://nesbot.com
http://twitter.com/NesbittBrian

License

Carbon is licensed under the MIT License - see the LICENSE file for details.

Why the name Carbon?

Read about Carbon Dating.