در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حلهای قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرمافزار اتفاق می افتند.
طرح های از پیش ساخته شدهای که میتوانید برای حل مشکلات آنها را سفارشی کنید. شما نمیتوانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آنها را در برنامه خود پیادهسازی کنید.
برای کار با تقویم فارسی در yii2 نیازی به نصب extension ندارید و فقط کافیه formatter رو در محل config/main.php(اگر مثل من از yii2 advanced استفاده میکنید) پیکره بندی کنید. چیزی مثل این نمونه:
'components' => [
'formatter' => [
'class' => 'yii\i18n\Formatter',
'locale' => 'fa_IR@calendar=persian',
'calendar' => \IntlDateFormatter::TRADITIONAL,
'dateFormat' => 'php:Y-m-d',
'datetimeFormat' => 'php:Y-m-d H:i',
'timeFormat' => 'php:H:i',
],
],
میتونید برای نمایش تاریخ و زمان از متد های خود formatter استفاده کنید. توجه داشته باشید قالب نمایش تاریخ زمان همونیه که ما در پیکره بندی formatter تعریف کردیم.
$formatter = \Yii::$app->formatter;// output: ۱۳۹۶-۰۴-۰۵ ۱۸:۳۵
echo $formatter->asDatetime('now');// output: ۱۳۹۶-۰۴-۰۵
echo $formatter->asDate('now');// output: ۱۴:۰۵
echo $formatter->asTime('now');
یا اینکه خودتون قالب نمایش رو براش تعریف کنید.
// ICU format
echo Yii::$app->formatter->asDate('now', 'yyyy-MM-dd'); // ۱۳۹۶-۰۴-۰۵
// PHP date()-format
echo Yii::$app->formatter->asDate('now', 'php:Y-m-d'); // ۱۳۹۶-۰۴-۰۵
برای مطالعه بیشتر اینجا رو ببینید. همچنین برای تبدیل تاریخ هم کتابخانه های زیادی وجود داره مثل این نمونه که میشه ازش استفاده کرد.