استفاده از تاریخ شمسی در codeigniter 4

به قول آقای سیف زاده، هر جا برنامه ای به زبان php دیدید که تاریخ را به شمسی نشان میدهد بدانید که حتما از jdf استفاده کرده است. در این لینک استفاده از jdf در کتابخانه codeigniter به طور کامل توضیح داده شده است. که مطالعه آن را به شما نیز توصیه می کنم. البته آموزش لینک مربوط به ورژن قبلی codeigniter می باشد.

در این پست ما نسخه 2.76 jdf را برای نسخه 4 کدایگنایتر راه اندازی خواهیم کرد. تابع jdf به تنهایی در codeigniter 4 قابل استفاده نیست و کمی تغییرات نیاز دارد. و روش کار هم مقداری با ورژن قبلی کدایگنایتر تغییر یافته است.

ابتدا باید یک custom library تعریف کنیم. به این ترتیب که فایلی به اسم jdf.php در مسیر زیر ایجاد می کنیم.

app/libraries

کدهای این لینک را داخل jdf.php که ایجاد کرده اید کپی کنید. تغییری که روی کدها داده ام این است که تمام دسترسی های داخلی توابع را بصورت محلی و بصورت شی گرایی فراخوانی کرده ام. به عبارتی در جاهای مورد نیاز this-> اضافه کرده ام.

استفاده ار تاریخ شمسی در codeigniter 4

نکته ای که در نسخه جدید کدایگنایتر باید رعایت کنید استفاده از namespace است. یعنی اگر دقت کنید در خط 2 فایل jdf.php کد ذیل درج شده است.

namespace App\Libraries;

خوب بعد از این مراحل میتوانید jdf را هر کجا که خواستید فراخوانی و استفاده کنید. چه در controlller و چه در view!

استفاده از jdf در داخل view کدایگنایتر

مثلا فرض کنید در داخل view میخواهیم تاریخ میلادی پیش فرض codeigniter را به شمسی تبدیل کنیم. ابتدا باید به مسیر فایل jdf اشاره کنید. باید از کد زیر استفاده کنید.

<?php use App\Libraries\jdf; ?>

استقاده از jdf در داخل view کدایگنایتر
بعد از اشاره به مسیر فایل jdf با استفاده از کدهای زیر می توانید تاریخ میلادی کد ایگنایتر را به شمسی تبدیل کنید.
 $this->jdf = new jdf();
echo $this->jdf->jdate("تاریخ:Y/m/d زمان:H:i:s", strtotime($var));

به این نکته توجه کنید که با استفاده از فانکشن strtotime تاریخ میلادی را که مثلا با فرمت 2022-03-04 10:08:25 بود را ابتدا به timestamp تبدیل کرده و سپش داخل jdate استفاده کردم.

2 نظر / نظر خود را در زیر وارد کنید

  1. ممنون عالی بود ولی یه ایرادی که مشاهده شد اینه که ساعت رو یک ساعت جلوتر نشون میده. ممنون میشم بررسی کنید البته من به روش زیر امتحان کردم تاریخ درست ولی ساعت درست نبود
    $var=date(“Y/m/d”);
    echo $this->jdf->jdate(“Y/m/d h:i:s”);

  2. کد نظر قبلی رو اشتباه کپی کرده بودم درستش اینه
    $var=date(“Y/m/d h:i:s”);
    echo $this->jdf->jdate(“Y/m/d h:i:s”, strtotime($var));

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