Xử lý DateTime đơn giản với Carbon trong Laravel & PHP

1. Carbon là gì?

 

Carbon được phát triển bởi Brian Nesbitt, mở rộng từ class DateTime của PHP.

 

  • Tích hợp mặc định từ Laravel 5.3.

 

  • Hỗ trợ múi giờ, định dạng ngày giờ, cộng/trừ thời gian, chuyển đổi ngôn ngữ tự nhiên (“next Monday”, “+2 weeks”).

 

Carbon, laravel, php

 

 

2. Cài đặt & môi trường

 

Carbon có sẵn trong Laravel, chỉ cần import:

 

use Carbon\Carbon;
 

Ví dụ môi trường thường dùng: PHP 8.x, Composer 2.x, Laravel 8.x, Carbon v2.

 

3. Lấy thời gian nhanh


 
Carbon::now(); // thời gian hiện tại
 
Carbon::today(); // ngày hôm nay
 
Carbon::yesterday(); // ngày hôm qua
 
Carbon::tomorrow(); // ngày mai
 
$newYear = new Carbon('first day of January 2016'); // 2016-01-01 00:00:00
 
Các helper today(), yesterday(), tomorrow() rất tiện để thao tác nhanh.
 

4. Tạo ngày giờ tùy chỉnh


 
Carbon::createFromDate(2024, 12, 25); // 2024-12-25
 
Carbon::createFromTime(14, 30, 0); // 14:30:00
 
Carbon::create(2025, 1, 1, 0, 0, 0, 'Asia/Ho_Chi_Minh');
 

Nếu để null, Carbon sẽ tự động lấy giá trị hiện tại.


Carbon, laravel, php

 

5. Thao tác cộng/trừ thời gian

 

Ví dụ tạo gói dùng thử 30 ngày:

 

$trialExpires = Carbon::now()->addDays(30);
 

Một số hàm phổ biến:

 

  • addDays(), subDays()

 

  • addMonths(), subMonths()

 

  • addYears(), subYears()

 

  • addHours(), subMinutes(), addSeconds()

 

⚠️ Lưu ý: Carbon::create(2012, 1, 31)->addMonth() sẽ ra 2012-03-03, vì tràn ngày. Hãy dùng addMonthNoOverflow() để tránh.

 

 

Carbon, laravel, php

 

6. Getter & Setter

 

Đọc giá trị:


 
$dt = Carbon::now(); echo $dt->year; // 2025
 
echo $dt->dayOfWeek; // 1 (thứ 2)
 

Gán lại giá trị:


 
$dt->year = 2020; $dt->month = 12; $dt->day = 31;
 

Hoặc dùng chuỗi setter:


 
$dt->year(2020)->month(12)->day(31);
 

7. Định dạng ngày giờ

 

Carbon cung cấp nhiều method nhanh:

 

$dt->toDateString(); // 2025-08-18
 
$dt->toTimeString(); // 14:32:05
 
$dt->toDayDateTimeString(); // Mon, Aug 18, 2025 2:32 PM

 

Ngoài ra có thể dùng format() của PHP:


 
$dt->format('l jS \of F Y h:i:s A'); // Monday 18th of August 2025 02:32:05 PM
 

8. Tính toán & so sánh thời gian


 
$start = Carbon::create(2025, 1, 1);
 
$end = Carbon::create(2025, 1, 31);
 
echo $start->diffInDays($end); // 30
 
echo $start->diffInHours($end); // 720
 

9. Hiển thị “thân thiện” cho người dùng


 
echo Carbon::now()->subHours(3)->diffForHumans(); // 3 hours ago
 

Carbon sẽ tự động chuyển đổi sang dạng dễ đọc hơn cho người dùng cuối.

 

10. Làm việc với Timezone

 

Carbon hỗ trợ làm việc với múi giờ rất linh hoạt.


 
$dt = Carbon::now('Asia/Ho_Chi_Minh');
 
echo $dt; // thời gian tại Việt Nam $dtUtc = Carbon::now('UTC');
 
echo $dtUtc;
 

Bạn cũng có thể chuyển đổi timezone:


 
$dt = Carbon::now();
 
$dt->setTimezone('Europe/London');
 
echo $dt; // chuyển sang giờ London

 

11. Đa ngôn ngữ (Localization)

 

Carbon có thể hiển thị ngày tháng theo nhiều ngôn ngữ khác nhau.

 

Carbon::setLocale('vi');
 
echo Carbon::now()->subMinutes(5)->diffForHumans(); // hiển thị: "5 phút trước"

 

Một số locale hỗ trợ: en, fr, de, vi, ja, zh, …

 

Kết luận

 

Carbon là thư viện cực kỳ tiện lợi trong Laravel và PHP, giúp:

 

  • Đơn giản hóa thao tác ngày giờ.

 

  • Giảm code phức tạp so với DateTime.

 

  • Hỗ trợ định dạng, cộng trừ, so sánh, và hiển thị thân thiện.

 

Nếu bạn đang làm việc với Laravel, hãy tận dụng Carbon để tiết kiệm thời gian và tăng hiệu quả code.

 HỖ TRỢ TRỰC TUYẾN