تبدیل تاریخ شمسی به میلادی php + فیلم آموزش زبان php
در این پست قصد داریم درباره تبدیل تاریخ شمسی به میلادی php صحبت کنیم. به احتمال زیاد با زبان برنامه نویسی PHP آشنا هستید. کسانی که طراح وب هستند یا برنامه نویسی انجام میدهند میدانند که زبان برنامه نویسی PHP یک زبان سمت سرور است و با استفاده از آن میتوان وب سایتهای ایستا یا Dynamic ایجاد کرد. قبل از هرچیز میخواهیم یک آشنایی کوتاه با زبان برنامه نویسی PHP داشته باشیم و ببینیم PHP چیست، سپس با استفاده از این زبان نحوه تبدیل تاریخ شمسی به میلادی در زبان برنامه نویسی PHP را توضیح خواهیم داد.مقدمه تبدیل تاریخ شمسی به میلادی php
از آنجایی که در کامپیوترهای شخصی سرور وجود ندارد، برای به نمایش درآوردن صفحات PHP باید از شبیه ساز سرور استفاده کنیم. شبیه ساز سرور یک نرم افزار است که در سیستم عامل نصب میشود و این امکان را فراهم میآورد تا بتوانیم فایلهای PHP را در کامپیوتر اجرا کنیم. از نمونه این نرم افزارها میتوان به Xampp و Wamp اشاره کرد. زبان پی اچ پی چند پلتفرمی است و میتواند در چندین سیستم عامل نظیر ویندوز، لینوکس و مک اجرا شود. یکی دیگر از مهم ترین مزایای زبان برنامه نویسی PHP در این است که متن باز است و همه میتوانند آن را دریافت کنند.
برای یادگیری زبان برنامه نویسی پی اچ پی میتوانید از مجموعههای آموزشی مختلف استفاده کنید که پیشنهاد ما استفاده از آموزشهای فرادرس است. برای دانلود این آموزشها میتوانید به لینک زیر مراجعه کنید:
تبدیل تاریخ شمسی به میلادی به صورت دستی
سال میلادی نیز 365 روز است که 7 ماه آن 31 روز و 4 روز آن 30 روزه است. در تاریخ میلادی، سالهایی کبیسه هستند که بر عدد 4 بخش پذیر باشد و از طرفی نیز مضرب 100 نباشد. ماه فوریه از تقویم میلادی در حالت عادی 28 روز است و در صورتی که کبیسه باشد 29 روز خواهد بود. ابتدا برای محاسبه تاریخ میلادی میبایست 621 سال را به تاریخ شمسی اضافه کنیم. این تاریخ در روزهای 1 فروردین تا 10 دی اضافه میشود. در روزهای 11 دی تا آخر سال شمسی نیز 622 سال باید اضافه گردد. برای مثال برای محاسبه سال 1399 به میلادی میبایست در نظر بگیریم که تاریخ مدنظر ما قبل از 11 دی است یا خیر؟ اگر بر فرض قبل از 11 دی باشد، 621 روز را با 1399 جمع میکنیم که نتیجه سال 2020 خواهد شد.
برای تبدیل روز شمسی به میلادی نیز همانند روش تبدیل تاریخ شمسی به میلادی php میتوان محاسبه را انجام داد. سال شمسی 226899 روز کمتر از سال میلادی است که با حساب کردن میتوان روز معادل میلادی را به دست آورد. حال با توجه به اینکه ماههای میلادی برخلاف ماههای قمری ثابت هستند میتوانیم ماه را نیز به دست آوریم. با دانستن اینکه کدام یک از ماههای میلادی 31 روز و کدام 30 روزه هستند، میتوان ماه میلادی را به دست آورد.
تبدیل تاریخ شمسی به میلادی php
پارامترهای تابع jalali_to_gregorian
چنانچه موفق به دانلود تابع نشدید اشکالی ندارد! کدهای این تابع در زیر آورده شده است:
function jalali_to_gregorian($jy, $jm, $jd, $mod="") {
$jy += 1595;
$days = -355668 + (365 * $jy) + (((int)($jy / 33)) * 8) + ((int)((($jy % 33) + 3) / 4)) + $jd + (($jm < 7)? ($jm - 1) * 31 : (($jm - 7) * 30) + 186);
$gy = 400 * ((int)($days / 146097));
$days %= 146097;
if ($days > 36524) {
$gy += 100 * ((int)(--$days / 36524));
$days %= 36524;
if ($days >= 365) $days++;
}
$gy += 4 * ((int)($days / 1461));
$days %= 1461;
if ($days > 365) {
$gy += (int)(($days - 1) / 365);
$days = ($days - 1) % 365;
}
$gd = $days + 1;
$sal_a = array(0, 31, (($gy % 4 == 0 and $gy % 100 != 0) or ($gy % 400 == 0))?29:28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
for ($gm = 0; $gm < 13 and $gd > $sal_a[$gm]; $gm++) $gd -= $sal_a[$gm];
return ($mod == "")? array($gy, $gm, $gd) : $gy.$mod.$gm.$mod.$gd;
}
برای تبدیل کردن تاریخ شمسی به میلادی میبایست سه مقدار را وارد برنامه کنیم تا پاسخ بگیریم. این سه مقدار شامل سال، ماه و روز میباشد. این سه پارامتر باید به صورت دستی وارد شوند تا پس از انجام دادن برخی عملیات، تبدیل به تاریخ میلادی گردد. سه پارامتری که در برنامه وجود دارند عبارتند از:$jy += 1595;
$days = -355668 + (365 * $jy) + (((int)($jy / 33)) * 8) + ((int)((($jy % 33) + 3) / 4)) + $jd + (($jm < 7)? ($jm - 1) * 31 : (($jm - 7) * 30) + 186);
$gy = 400 * ((int)($days / 146097));
$days %= 146097;
if ($days > 36524) {
$gy += 100 * ((int)(--$days / 36524));
$days %= 36524;
if ($days >= 365) $days++;
}
$gy += 4 * ((int)($days / 1461));
$days %= 1461;
if ($days > 365) {
$gy += (int)(($days - 1) / 365);
$days = ($days - 1) % 365;
}
$gd = $days + 1;
$sal_a = array(0, 31, (($gy % 4 == 0 and $gy % 100 != 0) or ($gy % 400 == 0))?29:28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
for ($gm = 0; $gm < 13 and $gd > $sal_a[$gm]; $gm++) $gd -= $sal_a[$gm];
return ($mod == "")? array($gy, $gm, $gd) : $gy.$mod.$gm.$mod.$gd;
}
- jy$: اشاره به سال شمسی دارد. این تاریخ باید به صورت کامل وارد شود.
- jm$: اشاره به ماه شمسی دارد که میتواند رقمی بین 1 تا 12 باشد.
- jd$: اشاره به روز شمسی دارد که میتواند رقمی بین 1 تا 31 باشد.
نحوه تبدیل تاریخ شمسی به میلادی php
در ادامه مواردی که در بالا توضیح دادیم به صورت کد نوشته شده است. ابتدا تاریخ شمسی به میلادی محاسبه میشود و عملیات حساب کردن سال کبیسه صورت میگیرد؛ و در نهایت مقدار تبدیل شده در تابع jalali_to_gregorian ذخیره میگردد. برای اینکه بتوانیم یک سال شمسی را به برنامه وارد کنیم و نتیجه را مشاهده کنیم، ابتدا باید یک فایل PHP ایجاد کنیم و تابع jalali_to_gregorian را فراخوانی کنیم. به این منظور یک فایل پی اچ پی به نام convert را ایجاد کنید و کدهای زیر را در داخل فایل بنویسید:
require_once("lib/jdf.php");
$date = jalali_to_gregorian(1400, 1, 1, "/");
echo $date;
حتماً میدانید که برای اجرای این فایل به نرم افزار زمپ نیاز دارید. در ادامه ابتدا فایل jdf.php را با استفاده از پارامتر require_once به پروژه اضافه کردهایم (فایل jdf.php باید در داخل یک پوشه و در کنار فایل اصلی قرار گیرد). اگر فایل را دانلود کردهاید آن را داخل یک پوشه به نام lib قرار دهید به صورتی که پوشه و فایل در داخل یک پوشه واحد باشند. اگر فایل jdf.php را دانلود نکردهاید میتوانید کدهای این تابع را از بالا کپی کنید و خودتان به صورت دستی یک فایل PHP ایجاد کنید و کدها را در داخل فایل قرار دهید.$date = jalali_to_gregorian(1400, 1, 1, "/");
echo $date;
در ادامه توضیح کدهای بالا یک متغیر به نام date ایجاد کردهایم که برابر است با تابع jalali_to_gregorian. حال مقداردهی باید انجام شود که این مقداردهی شامل 4 آیتم خواهد بود: سال، ماه، روز و یک کارکتر برای جدا کردن سه مقدار قبلی از همدیگر. در نهایت نیز با پارامتر echo محتویات داخل متغیر date چاپ خواهد شد.
تبدیل تاریخ شمسی به میلادی php به صورت گرافیکی
برای شروع ابتدا باید نرم افزار زمپ (Xampp) را نصب نمایید. این نرم افزار یک شبیه ساز سرور است که با استفاده از آن میتوانید فایلهای PHP را در سیستم اجرا کنید و نتیجه را مشاهده کنید. پس از آن که زمپ را نصب کردید میبایست به مسیر زیر در سیستم خود بروید.
C:xampphtdocs
در این مسیر یک پوشه با نام دلخواه ایجاد کنید. نام این پوشه را به خاطر بسپارید زیرا برای اجرا به نام این پوشه احتیاج خواهیم داشت. برای مثال در این مقاله نام پوشه را date قرار دادهایم. پس از اینکار نرم افزار زمپ را باز کنید و دو گزینه Apache و MySQL را استارت (Start) بزنید. حال کافیست نرم افزار زمپ را minimize کنید و یک مرورگر را باز کنید. برای دسترسی به پوشههای داخل htdocs تنها کافیست که در نوار آدرس مرورگر خود آدرس http://localhost/ را وارد کنید و در ادامه آدرس نام پوشه را بنویسید؛ مانند زیر:
http://localhost/date
از این پس میتوانید تنها با یک رفرش (refresh) نتیجه را مشاهده کنید. البته در حال حاضر پوشه خالی است و نتیجهای مشاهده نخواهید کرد. حال باید یک صفحه وب در داخل پوشه date ایجاد کنید. برای این کار یک فایل HTML به نام index ایجاد کنید. همانطور که میدانید یک فایل HTML یک ساختار کلی دارد که باید در تمامی فایلهای HTML رعایت شود. بنابراین قبل از هر چیزی کدهای زیر را در داخل فایل HTML قرار دهید.
< !DOCTYPE HTML >
< html >
< head >< /head >
< body >
< /body >
< /html >
با ذخیره کردن فایل index و رفرش کردن مرورگر متوجه خواهید شد که فایل اجرا میشود اما خالی است. برای اینکه یک کاربر بتواند در داخل کادر متنی اعداد مدنظر خود را وارد کند میبایست داخل فایل index یک فرم طراحی کنید. برای این کار از تگ < html >
< head >< /head >
< body >
< /body >
< /html >