آموزش تبدیل تاریخ شمسی به میلادی در PHP

آموزش تبدیل تاریخ شمسی به میلادی در PHP

همان طور که می دانید تقویم شمسی از تعداد حرکات زمین به دور خورشید تبعیت می کند اما تقویم میلادی قوانین خاص خودش را دارد و ممکن است کار با تقویم میلادی برای کاربران و توسعه دهندگان وب سایت سخت باشد. به همین دلیل همیشه یکی از مشکلات افراد فنی در حوزه برنامه نویسی با PHP تبدیل تاریخ است که ما در این راهنما سعی کرده ایم به آن بپردازیم. بنابراین برای تغییر تقویم در PHP و تبدیل تاریخ شمسی به میلادی در PHP کافیست چند دقیقه از زمان خود را صرف مطالعه مراحل زیر کنید.
نحوه تبدیل تاریخ شمسی به میلادی در PHP

پارامترهای تبدیل تاریخ شمسی به میلادی در زبان PHP

  • پارامتر j_y نمایشگر سال هجری شمسی با 4 رقم است.
  • پارامتر j_m در دستورات نشانگر ماه های سال هجری شمسی می باشد.
  • از پارامتر j_d برای نشادن دادن روزهای سال هجری شمسی استفاده می شود.
  • پارامتر mod یک پارامتر اختیاری برای نحوه نمایش فاصله دار اعداد به شکل Text-String می باشد.

مراحل تبدیل تاریخ شمسی به میلادی در PHP

هزاران روش برای تبدیل تاریخ شمسی به میلادی و یا برعکس وجود دارد. اما همان طور که در برخی از منابع رسمی در زبان PHP آمده است با وارد کردن کد زیر می توانید به راحتی این کار را انجام دهید. تنها کاری که باید به صورت پیش نیاز انجام دهید این است که ابتدا باید افزونه `php-intl` را نصب کرده و فعال کنید. سپس می توانید با استفاده از تابع `intlcal_from_date_time` کد زیر را وارد کنید و منتظر اتمام عملیات بمانید:


php
function shamsi_to_miladi($year, $month, $day)
{
$timestamp = jalali_to_gregorian($year, $month, $day);
$date = date('Y-m-d', $timestamp);
return $date;
}

function jalali_to_gregorian($jy, $jm, $jd)
{
$gy = ($jy <= 979) ? 621: 1600;
$jy -= ($jy <= 979) ? 0 : 979;
$days = (365 * $jy) + (((int)($jy / 33) * 8) + (int)((($jy % 33) + 3) / 4)) + 78 + $jd + ( ($jm < 7) ? ($jm - 1) * 31 : (($jm - 7) * 30) + 186);
$gy += 400 * (int)($days / 146097);
$days %= 146097;
$leap = 1;
if ($days > 36524) {
$days--;
$gy += 100 * (int)($days / 36524);
$days %= 36524;
if ($days >= 365) {
$days++;
} else {
$leap = 0;
}
}
$gy += 4 * (int)($days / 1461);
$days %= 1461;
$gy += (int)(($days - 1) / 365);
if ($days > 365) {
$days = ($days - 1) % 365;
} else {
$leap = 0;
}
$gd = $days + 1;
foreach (array(0, 31, (($leap) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30) as $gm => $v) {
if ($gd <= $v) {
break
}
$gd -= $v;
}
return mktime(0, 0, 0, $gm + 1, $gd, $gy);
}

// Convert solar date 01/01/1400 to Gregorian date
$shamsi_date = '1400-01-01';
list($year, $month, $day) = explode('-', $shamsi_date);
$miladi_date = shamsi_to_miladi($year, $month, $day);
echo $miladi_date;

در این کد مشاهده نمودید تابع `shamsi_to_miladi` و `jalali_to_gregorian` هر دو برای تبدیل تاریخ های شمسی استفاده می شود که در نهایت با عملیات انجام شده تغییر در تاریخ انجام خواهد شد. 
مراحل تبدیل تاریخ شمسی به میلادی در PHP
نکته مهم! در بسیاری از آموزش های تبدیل های تاریخی، به جای تقویم شمسی از عبارت تقویم جلالی استفاده شده است که در واقع یک مفهوم را می رسانند.

سخن آخر

کار کردن با تاریخ شمسی در طراحی وب و ایجاد امکان نمایش آن به کاربران دیگر بسیار مهم است. به همین دلیل امیدواریم که توانسته باشیم با کمک این راهنما یکی از دغدغه های فنی شما کاربران عزیز را حل کنیم. شما می توانید در صورت تمایل نظرات، انتقادات و پیشنهادات خود را در مورد روش های دیگر این آموزش با ما و سایر کاربران به اشتراک بگذارید. از همراهی شما بی نهایت ممنونیم.
چقدر این پست مفید بود؟ روی یک ستاره کلیک کنید تا به آن امتیاز دهید!
پست های پیشنهادی
php چیست
متوسط

php چیست و چه استفاده ای دارد: بررسی جامع

مفهوم کامل زبان php و مزیت های آن نسبت به سایر زبان ها!
تیم محتوا
1403/03/02
پیش نیازهای لازم برای طراحی سایت با لاراول
حرفه‌ای

پیش نیازهای لازم برای طراحی سایت با لاراول

بررسی آموزش پیش نیازهای لازم طراحی سایت با لاراول را به طور ...
تیم محتوا
1403/03/21
آموزش نصب npm در لاراول
حرفه‌ای

آموزش نصب npm در لاراول

دد
تیم محتوا
1403/03/23