تبدیل تاریخ میلادی به شمسی در php :تا به حال به این موضوع فکر کرده اید که اگر امکان استفاده از تاریخ در وب سایتها وجود نداشت، چه اتفاقی میافتاد؟ تقریبا بدون ثبت و خواندن تاریخ در وب سایت ها، پیاده سازی هیچ کدام از خدماتی که در حال حاضر در سایتها ارائه میشوند، کار ساده ای نخواهد بود. ثبت نام کاربران، گزارشهای مالی، زمان پستهای ارسالی و… نمونه ای از خدماتی است که با تاریخ در ارتباط اند. بنابراین کار با تاریخ یکی از رایجترین مواردی است که در طراحی و برنامه نویسی سایتها صورت میگیرد. کمتر سایت و یا اپلیکیشنی پیدا خواهید کرد که از تاریخ استفاده نکرده باشد.
تبدیل تاریخ در برنامه نویسی با زبان های مختلف
همانطور که گفته شد امروزه تبدیل تاریخ به راحتی با استفاده از سایت های تبدیل تاریخ انجام می شود. اگر به بخواهیم تبدیل تاریخ در برنامه نویسی را بررسی کنیم و با استفاده از زبان های برنامه نویسی، برنامه ای را بنویسیم که تبدیل تاریخ را انجام دهد، راهکار های زیادی را داریم. تقریبا با اکثر زبان های برنامه نویسی مانند، سی پلاس پلاس، سی شارپ، پی اچ پی و… می توان برنامه تبدیل تاریخ را پیاده سازی کرد.
تبدیل تاریخ شمسی به میلادی php
روشهای زیادی برای استفاده از تاریخ در PHP وجود دارد. برای کار با تاریخ توابع و کتبخانههای زیادی توسعه داده شده است که استفاده از آنها با توجه به مستندات ارائه شده کار چندان سختی نخواهد بود. اما تاریخی که به صورت پیش فرض در این زبان استفاده میشود به صورت میلادی است. یکی از مشکلات برنامه نویسان و طراحان ایرانی، استفاده از تاریخ شمسی و قابلیت تبدیل آن به تاریخ میلادی در سایتها است. در این مقاله، روشهای مختلف تبدیل تاریخ شمسی به میلادی در زبان برنامه نویسی php را به شما آموزش خواهیم داد. پس اگر قصد دارید از تاریخ شمسی در وب اپلیکیشنهای خود استفاده کنید، از شما دعوت میکنیم تا در انتهای این مقاله همراه ما باشید.
تبدیل تاریخ شمسی به میلادی در PHP با استفاده از کتابخانه Verta
ورتا (Verta) پکیجی برای تبدیل تاریخ شمسی و میلادی به یکدیگر است که برای فریم ورک لاراول عرضه شده است. این پکیج توابع کمکی زیادی را شامل میشود که کاربران با بکارگیری آنها میتوانند به راحتی تبدیلات تاریخ را انجام دهند. زبان PHP دارای کلاسی برای تاریخ و زمان است که پکیج ورتا از همین کلاس ارث بری کرده است. ورتا از الگوریتم تبدیل تاریخ شمسی به میلادی php و بالعکس استفاده میکند. الگوریتم مبدل تاریخی که در این پکیج استفاده شده است بر اساس الگوریتم تاریخ جلالی وحید سهراب لو، روزبه پورنادر و محمد توسی میباشد.
برای استفاده از این پکیج در وب اپلیکیشنهای خود نیاز به نصب و استفاده از کامپوزر (Composer) دارید. کامپوزر یک ابزار کامند لاین است که به منظور کاهش وابستگی نرم افزارها به کتابخانهها و پکیجهای خارجی ارائه شده است. با استفاده از این ابزار به راحتی میتوان پکیجها و کتابخانه را دریافت و مدیریت کنید. منبع اصلی پکیجها و کتبخانههای کامپوزر سایت Packagist است که به عنوان مخزن پیشفرض پروژههای PHP شناخته میشود. در این سایت توسعه دهندگان مختلف کتابخانهها و پکیجهای مختلف پروژه های خود را در دسترس سایر توسعه دهندگان قرار میدهند.
شما می توانید از نرم افزار تقویم آنلاین برای مدیریت زمان و تاریخ امور خود استفاده کنید.
آموزش نصب Composer
ابتدا باید ابزار کامپوزر را باید دانلود کنید. برای دانلود کامپوزر به سایت رسمی این برنامه به نشانی getcomposer.org مراجعه کنید. برای دانلود آخرین نسخه این برنامه مطابق عکس زیر بر روی Download کلیک کنید. آموزش نصب کامپوزر تبدیل تاریخ شمسی به میلادی با jdf در PHP
در صفحه بعد که هدایت میشوید، روشهای مختلفی برای نصب کامپوزر وجود دارد. در این بخش سادهترین روش نصب این ابزار بررسی میشود. در این صفحه برای دریافت فایل نصبی کامپوزر بر روی عبارت Composer-Setup.exe کلیک کنید.
پس از دریافت فایل اجرایی کامپوزر، آن را اجرا کنید و مراحل را مانند تصاویر دنبال کنید. در این مرحله از نصب باید نشانی فایل اجرایی php را برای نصب Composer مشخص نمایید. فایل اجرایی PHP معمولا توسط نرم افزارهایی مانند Xampp، Wamp و… نصب میشود. البته معمولا فایل نصبی به صورت اتوماتیک آدرس فایل اجرایی PHP را شناسایی میکند. اگر نرم افزار نصب نتوانست به صورت خودکار این فایل را شناسایی کند، لازم است تا با زدن دکمه Browse این مرحله را به صورت دستی پیش ببرید. پس انجام این کار بر روی گزینه Next کلیک کنید.
آموزش نصب کامپوزر تبدیل تاریخ شمسی به میلادی با jdf در PHP
برای نصب این ابزار باید به اینترنت متصل باشید. پس این مرحله، دیگر نیازی به تغییرات و انجام عمل خاصی وجود ندارد و کافی است بر روی گزینههای Next و در نهایت Install کلیک کنید. تبریک میگویم، کامپوزر شما نصب شده است. اکنون میتوانیم برای دریافت کتابخانه ورتا از این ابزار استفاده کنیم.
نصب کتابخانه Verta
برای نصب و بکارگیری کتابخانه ورتا در کامند لاین پروژه خود، دستور زیر را وارد کنید.
$ composer require hekmatinasser/verta
حال اگر بخواهید از این کتابخانه در پروژه لاراولی خود استفاده کنید، باید این پکیج را درون پروژه خود اضافه کنید. برای این کار دستور زیر را وارد کنید. البته در صورتی که قصد دارید از این پکیج در پروژههای غیر لاراولی استفاده کنید، میتوانید این مرحله را نادیده بگیرید.
// config/app.php
‘providers’ => [
…
Hekmatinasser\Verta\VertaServiceProvider::class,
],
‘alias’ => [
…
‘Verta’ => Hekmatinasser\Verta\Verta::class,
]
نحوه استفاده از کتابخانه Verta
نحوه استفاده از این پکیج در نرم افزارها بسیار ساده است. کافی است در بالای هر فایلی از پروژه که نیاز به استفاده از کلاس ورتا دارید، از دستور زیر استفاده کنید. با این کار به راحتی میتوانید از توابع پیش فرض این پکیج در کدهای خود استفاده کنید. پکیج ورتا توابع بسیار زیادی را به منظور کار با تاریخ برای توسعه دهندگان آماده کرده است. با استفاده از این توابع میتوانید برای بدست آوردن تاریخ و زمان کنونی شمسی، نمایش تاریخ شمسی، نمایش تاریخ میلادی، تبدیل اعداد انگلیسی به فارسی و…. استفاده کنید.
use Verta;
// or
use Hekmatinasser\Verta\Verta;
تصور کنید که قصد دارید در نرم افزار خود با استفاده از این کتابخانه، تاریخ میلادی را به شمسی تبدیل کنید. برای این کار کافی است از دستور زیر استفاده کنید. البته از آنجایی که این تبدیلات در نرم افزارها بسیار پر استفاده هستند، توابع سادهتری برای استفاده از آنها در این پکیج نوشته شده اند.
$v = new Verta(‘2016-12-27 14:12:32’);
$v = Verta::instance(‘2016-12-25 11:12:36’);
$v = Facades\Verta::instance(‘2016-12-25 11:12:36’);
برای تبدیل تاریخ از میلادی به شمسی به صورت ساده، میتوانید از دستور زیر استفاده کنید :
return Verta::getGregorian(1394,10,4);
//جواب این دستور به صورت زیر است
// [2015,12,25]
همچنین برای تبدیل تاریخ از شمسی به میلادی به صورت ساده، از دستور زیر استفاده کنید :
return Verta::getJalali(2015,12,25);
//جواب این دستور به صورت زیر است
// [1394,10,4]
همانطور که اشاره شد این پکیج کاربردهای بسیاری در نرم افزارهای ایرانی و فارسی زبان دارد. بنابراین اگر قصد دارید از سایر قابلیتهای این پکیج استفاده کنید به شما پیشنهاد میکنیم که مستندات آن را مطالعه کنید.
تبدیل تاریخ شمسی به میلادی با jdf در PHP با استفاده از کتابخانه Jdf
دومین روش استفاده از کتابخانه Jdf است. Jdf کتابخانه ای برای تبدیل تاریخ شمسی و میلادی به یکدیگر است که برای زبانهای برنامه نویسی مختلف توسعه داده شده است. استفاده از این روش نسبت به روش قبل از مزیتهای کمتری برخودار است. زیرا پکیج ورتا امکانات بسیار زیادی را برای کار با تاریخ در اختیار توسعه دهندگان وب قرار میدهد. ازطرفی دیگر پکیج ورتا با استفاده از کدنویسی شی گرا پیاده سازی شده است، به همین دلیل میتواند به راحتی در هر بخش از کدهای شما استفاده شود. همچنین علاوه بر تمیز شدن کدهای شما، باعث کاهش میزان کدنویسی میشود.
بنابراین زمانی که نیاز به استفاده از توابع مختلف کار با تاریخ احساس نمیشود، استفاده از کتابخانه Jdf میتواند گزینه مناسبی باشد. همچنین اگر پروژه شما به صورت شی گرا پیاده سازی نشده است، استفاده از این روش پیشنهاد نمیشود. در این کتابخانه دو تابع gregorian_to_jalali و jalali_to_gregorian از توابع بسیار کاربردی برای تبدیل تاریخ از میلادی (گرگوری) به هجری شمسی (جلالی) و برعکس میباشند. توابع مورد استفاده در این کتابخانه برای تبدیل تاریخ میلادی به شمسی با استفاده از PHP در یک فایل تعریف شده اند. پس در هر جایی از که نیاز به تبدیل تاریخ داشته باشید کافی است که ابتدا فایل اصلی کتابخانه را دانلود و سپس در پروژه خود Include کنید. بعد از این کار میتوانید به راحتی از توابع این کتابخانه در کدهای خود استفاده کنید.
راهنمای تابع gregorian_to_jalali و jalali_to_gregorian
این تابعها دارای 4 پارامتر (آرگومان) بوده و وظیفه اصلی آن ها، تبدیل تایخ هجری شمسی به میلادی و یا برعکس میباشد. سه پارمتر اول این توابع حتما باید وارد شوند، اما پارامتر چهارم در آنها اختیاری است. اگر بخواهیم تاریخ میلادی را به شمسی تبدیل کنیم باید از تابع gregorian_to_jalali استفاده کنیم. تاریخی که در این تابع وارد میکنیم، حتماً باید میلادی باشد تا در خروجی به هجری شمسی تبدیل گردد. خروجی این تابع در حالت پیشفرض به صورت آرایه است، اما به وسیله پارامتر چهارم میتوان خروجی را به عبارت (متن-رشته) تبدیل کرد.
همچنین اگر قصد داشته باشیم که تاریخ شمسی را به میلادی تبدیل کنیم، باید از تابع jalali_to_gregorian استفاده کنیم. تاریخی که در این تابع باید وارد شود حتما باید شمسی باشد تا در خروجی به صورت میلادی نمایش داده شود. پارامترهای این توابع مشابه هم هستند و از نظر کارکرد تفاوتی ندارند.
- تابع تبدیل تاریخ میلادی به شمسی :
mixed gregorian_to_jalali( int $year , int $month , int $day [, string $mod = “” ] )
gregorian_to_jalali($g_y,$g_m,$g_d,$mod);
- تابع تبدیل تاریخ شمسی به میلادی php
:
([ “”=mixed jalali_to_gregorian( int $year , int $month , int $day [, string $mod
jalali_to_gregorian($j_y,$j_m,$j_d,$mod);
پارامترهای تابع gregorian_to_jalali عبارتند از :
- g_y$ : پارامتر اول ، سال میلادی یا شمسی ( کامل 4 رقمی )
- g_m$ : پارامتر دوم ، ماه میلادی ( 12- 1 )
- g_d$ : پارامتر سوم ، روز میلادی ( 31 – 1 )
- mod$ : پارامتر چهارم ، یک پارامتر اختیاری است. تا زمانی که این پارامتر را وارد نکنید یا خالی بگذارید، خروجی تابع به صورت یک آرایه از سال و ماه و روز هجری شمسی خواهد بود . اما اگر هر مقدار دلخواهی را برای این پارامتر وارد نمایید، نوع خروجی به یک عبارت (متن-رشته) تغییر خواهد کرد که ترکیبی از سال و ماه و روز است و در بین سال و ماه و روز، همان کاراکتری که در این پارامتر وارد نموده بودید، به عنوان جدا کننده قرار میگیرد. به مثال توجّه بفرمایید:
include jdf.php;
gregorian_to_jalali(2011,2,11);// خروجی: array(1389,11,22);
gregorian_to_jalali(2011,2,11,’ / ‘);// خروجی: 1389 / 11 / 22
پارامترهای تابع jalali_to_gregorian عبارتند از :
- j_y$ : پارامتر اول ، سال هجری شمسی ( کامل 4 رقمی )
- j_m$ : پارامتر دوم ، ماه هجری شمسی ( 12- 1 )
- j_d$ : پارامتر سوم ، روز هجری شمسی ( 31 – 1 )
- mod$ : پارامتر چهارم ، یک پارامتر اختیاری است. تا زمانی که این پارامتر را وارد نکنید یا خالی بگذارید، خروجی تابع به صورت یک آرایه از سال و ماه و روز میلادی خواهد بود . اما اگر هر مقدار دلخواهی را برای این پارامتر وارد نمایید، نوع خروجی به یک عبارت (متن-رشته) تغییر خواهد کرد که ترکیبی از سال و ماه و روز است و در بین سال و ماه و روز، همان کاراکتری که در این پارامتر وارد نموده بودید، به عنوان جدا کننده قرار میگیرد. به مثال توجّه بفرمایید:
include jdf.php;
jalali_to_gregorian(1389,11,22);// خروجی: array(2011,2,11);
jalali_to_gregorian(1389,11,22,’ – ‘);// خروجی: 2011 – 2 – 11
نکته :
صفر قبل از اعداد ورودی را حذف کنید: مثلا 02 را به 2 تبدیل نموده، سپس به آرگومانها وارد کنید.