- vừa được xem lúc

Xử lý datetime dễ dàng hơn với thư viện Carbon trong laravel

0 0 7

Người đăng: Học sinh cá biệt

Theo Viblo Asia


- Carbon là một gói phần mềm được phát triển bởi Brian Nesbit mở rộng từ class DateTime của PHP. Từ phiên bản 5.3, Laravel đã tích hợp sẵn thư viện này vào Project. Việc sử dụng tốt thư viện này sẽ giúp bạn rất nhiều vấn đề về xử lý thời gian.

  • Thư viện này giúp chúng ta rất nhiều trong việc xử lý datetime trong PHP. Điển hình như:
  • Xử lý timezone.
  • Lấy ngày tháng hiện tại dễ dàng.
  • Convert datetime sang định dạng khác để đọc
  • Dễ dàng thao tác với datetime.
  • Chuyển đổi cú pháp là cụm từ tiếng anh sang datetime.

- Bạn cần import thư viện để sử dụng:
use Carbon\Carbon;

Ví dụ:

  • Lấy thời gian:
Carbon::now(); // thời gian hiện tại 2018-10-18 14:15:43
Carbon::yesterday(); //thời gian hôm qua 2018-10-17 00:00:00
Carbon::tomorrow(); // thời gian ngày mai 2018-10-19 00:00:00
$newYear = new Carbon('first day of January 2018'); // 2018-01-01 00:00:00
  • Để lấy tgian hiện tại tại Việt Nam ta sẽ thêm locale của Việt nam như sau:
echo Carbon::now('Asia/Ho_Chi_Minh'); // 2018-10-18 21:15:43
  • Để biết thêm về các nước khác bạn có thể tại trang chủ của PHP: Timezone
  • Bạn cũng có thể chuyển đổi kiểu datetime khác:
$dt = Carbon::now('Asia/Ho_Chi_Minh'); echo $dt->toDayDateTimeString(); Thu, Oct 18, 2018 9:16 PM echo $dt->toFormattedDateString(); // Oct 18, 2018 echo $dt->format('l jS \\of F Y h:i:s A'); // Thursday 18th of October 2018 09:18:57 PM echo $dt->toDateString(); // 2018-10-18
echo $dt->toTimeString(); // 21:16:20
echo $dt->toDateTimeString(); // 2018-10-18 21:16:16 

- Các bạn cũng có thể chỉ lấy ngày, tháng, năm, giờ, phút, giây, ngày của tuần, ngày của tháng, ngày của năm, tuần của tháng, tuần của năm, số ngày trong tháng. Thật dễ dàng :))
 Carbon::now()->day; //ngày Carbon::now()->month; //tháng Carbon::now()->year; //năm Carbon::now()->hour; //giờ Carbon::now()->minute; //phút Carbon::now()->second; //giây Carbon::now()->dayOfWeek; //ngày của tuần Carbon::now()->dayOfYear; //ngày của năm Carbon::now()->weekOfMonth; //ngày của tháng Carbon::now()->weekOfYear; //tuần của năm Carbon::now()->daysInMonth; //số ngày trong tháng

- Có thể tăng giảm ngày, tháng, năm, giờ, phút, giây bằng hàm 2 hàm add() và sub()
$dt = Carbon::now(); echo $dt->addYears(5); echo $dt->addYear(); echo $dt->subYear(); echo $dt->subYears(5); echo $dt->addMonths(60); echo $dt->addMonth(); echo $dt->subMonth(); echo $dt->subMonths(60); echo $dt->addWeeks(3); echo $dt->addWeek(); echo $dt->subWeek(); echo $dt->subWeeks(3); echo $dt->addDays(29); echo $dt->addDay(); echo $dt->subDay(); echo $dt->subDays(29); echo $dt->addHours(24); echo $dt->addHour(); echo $dt->subHour(); echo $dt->subHours(24); ...

- Ta cũng có thể so sánh với thời gian hiện tại một cách dễ dàng: Nó sẽ trả về là true hay false.
 $now = Carbon::now(); $now->isWeekday(); $now->isWeekend(); $now->isYesterday(); $now->isToday(); $now->isTomorrow(); $now->isFuture() $now->isPast(); $now->isBirthday(); // là ngày sinh nhật hay không

- Tính toán sự khác nhau giữa 2 datetime:
 $dt = Carbon::create(2018, 10, 18, 21, 40, 16); //Tạo 1 datetime $now = Carbon::now(); echo $now->diffInSeconds($dt); echo $now->diffInMinutes($dt); echo $now->diffInHours($dt); echo $now->diffInDays($dt); echo $now->diffInMonths($dt); echo $now->diffInYears($dt);

- Như trên facebook các bạn thấy các bài viết sẽ có trạng thái là 1 phút trước, 1 giờ trước chẳng hạn Carbon cũng hỗ trợ các bạn phần này luôn:
 Carbon::setLocale('vi'); // hiển thị ngôn ngữ tiếng việt. $dt = Carbon::create(2018, 10, 18, 14, 40, 16); $dt2 = Carbon::create(2018, 10, 18, 13, 40, 16); $now = Carbon::now(); echo $dt->diffForHumans($now); //12 phút trước echo $dt2->diffForHumans($now); //1 giờ trước

Trong quá trình làm việc mình gặp phải một trường hợp như sau:

Hãy lấy ra chủ nhật tuần trước
Hãy lấy ra chủ nhật cuối cùng của tháng trước
Hãy lấy ra chủ nhật cuối cùng của năm trước
...


Bạn sẽ xử lý thế nào? ?
Với Carbon thì vô cùng đơn giản:
Để làm được điều đó ta làm như sau:

 $sundayLastMonth = Carbon::parse('last sunday of last month');


Carbon hỗ trợ chúng ta hàm parse() để biên dịch và tìm ra ngày tháng phù hợp với mục đích của chúng ta một cách dễ dàng hơn.
Trên đây mình chỉ liệt kê những kiểu thường dùng, ngoài ra còn rất nhiều các kiểu khác nữa, bạn có thể tham khảo tại trang chủ của Carbon tại Carbon

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 409

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 773

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 372

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 461

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436