SoFunction
Updated on 2025-03-10

Seven very useful but few people know about Carbon methods in Laravel

Preface

Everyone should know that we use Carbon a lot of times to deal with dates and times, right? But how many people have read the document in full and understand what methods does it have? Besides the well-known now() and format() methods, Carbon has many other useful methods.

Let’s take a look together below.

1. isX: True/False

There are many ways to judge whether Carbon objects are today, weekends, leap years, etc. The following are listed in the official documentation:

<?php
$dt->isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();
$dt->isSameDay(Carbon::now());

2. isBirthday

In addition to the list above, Carbon also has a way to determine whether a date is someone’s birthday. In addition to single check month and day, you can also do this:

$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
var_dump($born->isBirthday($noCake));  // bool(false)
var_dump($born->isBirthday($yesCake));

3. StartOfX and EndOfX lists

Here are the startOfX series and the endOfX series:

$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->startOfDay(); // 2012-01-31 00:00:00
echo $dt->endOfDay(); // 2012-01-31 23:59:59
echo $dt->startOfMonth(); // 2012-01-01 00:00:00
echo $dt->endOfMonth(); // 2012-01-31 23:59:59
echo $dt->startOfYear(); // 2012-01-01 00:00:00
echo $dt->endOfYear(); // 2012-12-31 23:59:59
echo $dt->startOfDecade(); // 2010-01-01 00:00:00
echo $dt->endOfDecade(); // 2019-12-31 23:59:59
echo $dt->startOfCentury(); // 2000-01-01 00:00:00
echo $dt->endOfCentury(); // 2099-12-31 23:59:59
echo $dt->startOfWeek(); // 2012-01-30 00:00:00
echo $dt->endOfWeek(); // 2012-02-05 23:59:59

4. Today, Tomorrow, Yesterday

Three simple but very useful methods do not require calling now(), then replacing the hours, minutes and seconds, and then increasing or subtracting the number of days:

$today = Carbon::today(); // assuming 2016-06-24
echo $today;        // 2016-06-24 00:00:00
$tomorrow = Carbon::tomorrow();
echo $tomorrow;       // 2016-06-25 00:00:00
$yesterday = Carbon::yesterday();
echo $yesterday;       // 2016-06-23 00:00:00

5. DiffForHumans + Localization

You may have used this method called diffForHumans() - it returns the difference between two dates in a way that is easy for people to read:

echo Carbon::now()->subDays(5)->diffForHumans(); // 5 days ago

But did you know it can be localized as well? Just change the location, such as in Chinese:

Carbon::setLocale('zh');
echo Carbon::now()-&gt;addYear()-&gt;diffForHumans(); // A year ago

6. Change now() to any time you want

$knownDate = Carbon::create(2001, 5, 21, 12); // Create a test dateCarbon::setTestNow($knownDate);      // set the mock 
echo Carbon::now();         // 2001-05-21 12:00:00

7. Weekly constants

The following constants can be used instead of the day of the week:

var_dump(Carbon::SUNDAY);       // int(0)
var_dump(Carbon::MONDAY);       // int(1)
var_dump(Carbon::TUESDAY);       // int(2)
var_dump(Carbon::WEDNESDAY);      // int(3)
var_dump(Carbon::THURSDAY);      // int(4)
var_dump(Carbon::FRIDAY);       // int(5)
var_dump(Carbon::SATURDAY);      // int(6)

Do you know all the useful methods mentioned above? You can list the methods you find useful in the message type.

Summarize

The above is the entire content of this article. I hope the content of this article will be of some help to your study or work. If you have any questions, you can leave a message to communicate. Thank you for your support.