نحوه مدیریت تاریخ و زمان با Carbon در Laravel و PHP

مقدمه

کار کردن با تاریخ و زمان در PHP می‌تواند پیچیده باشد. باید با strtotime، مشکلات فرمت، محاسبات زیاد و موارد دیگر سروکار داشته باشیم.

پکیج Carbon کمک می‌کند کار با تاریخ و زمان در PHP بسیار ساده‌تر و خواناتر شود تا کد ما قابل نگهداری‌تر باشد.

Carbon پکیجی است که توسط Brian Nesbit ساخته شده و کلاس داخلی DateTime در PHP را گسترش می‌دهد.

این پکیج امکانات خوبی برای کار با تاریخ در PHP فراهم می‌کند، از جمله:

  • مدیریت timezone ها

  • گرفتن زمان فعلی به‌سادگی

  • تبدیل datetime به حالت خوانا برای انسان

  • تبدیل جمله انگلیسی به تاریخ (مثل "first day of January 2016")

  • اضافه و کم کردن زمان (+2 weeks ، -6 months)

  • روش معنایی و ساده برای کار با تاریخ‌ها

در این مقاله، Carbon را نصب کرده و قابلیت‌های آن را بررسی می‌کنیم.


پیش‌نیازها

برای دنبال کردن این آموزش نیاز دارید:

  • یک محیط توسعه Laravel فعال داشته باشید

  • یا طبق مستندات Laravel آن را نصب کنید

  • اگر از Laravel Sail استفاده کنید، به Docker نیاز دارید

این آموزش با نسخه‌های زیر تست شده است:

  • PHP 8.0.5

  • Composer 2.0.13

  • MySQL 8.0.24

  • Laravel 8.40.0

  • Carbon 2.31


راه‌اندازی پروژه

برای استفاده از Carbon باید آن را import کنیم:

use Carbon\Carbon;

خبر خوب اینکه Carbon به‌صورت پیش‌فرض داخل Laravel وجود دارد.


گرفتن یک تاریخ یا زمان مشخص

گرفتن زمان فعلی:

$current = Carbon::now();

یا:

$current2 = new Carbon();

گرفتن تاریخ امروز:

$today = Carbon::today();

دیروز:

$yesterday = Carbon::yesterday();

فردا:

$tomorrow = Carbon::tomorrow();

parse کردن یک رشته:

$newYear = new Carbon('first day of January 2016');

خروجی:

2016-01-01 00:00:00

ساخت تاریخ با کنترل بیشتر

ساخت تاریخ از اجزای جداگانه:

Carbon::createFromDate($year,$month,$day,$tz);

ساخت زمان:

Carbon::createFromTime($hour,$minute,$second,$tz);

ساخت کامل:

Carbon::create($year,$month,$day,$hour,$minute,$second,$tz);

اگر مقدار null بدهید، مقدار فعلی جایگزین می‌شود.


تغییر دادن تاریخ و زمان

مثلاً برای محاسبه پایان دوره آزمایشی ۳۰ روزه:

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

متدهای دیگر:

  • addYear / subYear

  • addMonths / subMonths

  • addDays / subDays

  • addWeeks / subWeeks

  • addHours / subHours

  • addMinutes / subMinutes

  • addSeconds / subSeconds

نکته مهم:

اگر به 31 ژانویه یک ماه اضافه کنید، ممکن است به 3 مارس برسد (به خاطر overflow).
برای جلوگیری:

addMonthWithoutOverflow()

استفاده از Getter و Setter

خواندن مقادیر:

$dt = Carbon::now();

$dt->year;
$dt->month;
$dt->day;
$dt->hour;
$dt->second;

تغییر مقادیر:

$dt->year = 2015;
$dt->month = 4;
$dt->day = 21;

یا به صورت chain:

$dt->year(2015)->month(4)->day(21)->hour(22)->minute(32)->second(5);

یا:

$dt->setDate(2015,4,21)->setTime(22,32,5);

یا:

$dt->setDateTime(2015,4,21,22,32,5);

خروجی:

2015-04-21 22:32:05

فرمت‌بندی تاریخ و زمان

متدهای آماده:

$dt->toDateString();
$dt->toFormattedDateString();
$dt->toTimeString();
$dt->toDateTimeString();
$dt->toDayDateTimeString();

فرمت سفارشی:

echo $dt->format('l jS \of F Y h:i:s A');

نمونه خروجی:

Tuesday 21st of April 2015 10:32:05 PM

محاسبه اختلاف زمان

اختلاف عددی

$dt->diffInHours($future);
$dt->diffInDays($future);

نمایش اختلاف به زبان انسانی

مثلاً:

$dt->diffForHumans($future);

خروجی:

1 month before

یا:

3 hours ago

نتیجه‌گیری

در این مقاله Carbon را نصب کردید و قابلیت‌های آن برای مدیریت تاریخ و زمان در PHP و Laravel را یاد گرفتید.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *