مبدل شمسی توابع زمان در PHP
۷ آبان ۱۳۸۹ ساعت ۰۳:۰۴
پی اچ پی
YADC) Yet Another Date Converter)
من دو سال پیش تابع ()date در PHP رو به شکل یک کلاس شمسی کردم و در این سایت قرار دادم. یه سری داونلود کردند و احتمالا استفاده کردند. حالا نسخه جدید این کلاس رو با امکانات بیشتر می تونید دریافت کنید یا نمونه قدیمی خودتون رو بروز کنید. تغییرات در نسخه 2.0.0 به شکل زیر هستند:
- اضافه شدن متد جدید برای شبیه سازی تابع ()mktime
- اضافه شدن متد جدید برای شبیه سازی تابع ()getdate
- رفع باگ
- اضافه شدن امکان نمایش اعداد بصورت فارسی
معرفی کلاس
| Properties (مشخصه ها) | |
|---|---|
| نام | توضیج |
| jformat$ | آرایه انجمنی حاوی کلیه کاراکترهای معتبر برای تابع date ولی با مقدار شمسی و فارسی |
| format$ | مانند jformat$ ولی برای تاریخ میلادی |
| farsiDigits$ | مقدار Boolean برای تعیین اینکه اعداد، فارسی نمایش داده شوند یا خیر. مقدار پیشفرض: TRUE |
| Methods (متدها) | |||
|---|---|---|---|
| نام | توضیج | پارامترها | مقدار بازگشتی |
| date | شبیه ساز تابع ()date برای تاریخ شمسی |
|
فرمت ترجمه شده بصورت string |
| mktime | شبیهساز تابع ()mktime برای ایجاد timestamp ولی با ورودیهای شمسی. |
|
Timestamp یونیکس |
| getdate | شبیهساز شمسی تابع ()getdate با خروجی شمسی |
|
آرایه مطابق با تابع ()getdate |
نمونه استفاده:
include_once "jcalendar.class.php";
$calendar = new jCalendar;
echo $calendar->date("H:i Y/m/d");
$timestamp = $calendar->mktime(19, 45, null, 7, 23, 1366);
echo $calendar->getdate($timestamp);
echo $calendar->date("H:i Y/m/d", $timestamp);
علت اصلی اینکه این مبدل بصورت کلاس ایجاد شده و نه بصورت یک تابع، این بوده که مشخصه های format$ و jformat$ حاوی تمامی کاراکترهای معتبر تابع ()date هستند و از طریق کلاس امکان دسترسی به همه اونها بدون فراخوانی خود تابع ()date یا متد ()jdate هست.
کافیه یکبار متد jdate با هر فرمت ورودی فراخوانی بشه تا این مشخصه ها مقدار بگیرن. نمونه:
include_once "jcalendar.class.php";
$calendar = new jCalendar;
echo $cal->date("H:i Y/m/d");
echo $cal->jformat['Z'];
echo $cal->format['U'];
| کاراکترهای معتبر تابع ()date | ||
|---|---|---|
| کاراکتر | توضیج | نمونه |
| d | روز از ماه بصورت دو رقمی | عددی بین 01 تا 31 |
| D | نام روز در هفته، فقط حرف اول | پ (=پنجشنبه) |
| j | روز از ماه. تک رقمی برای اعداد تک رقمی | عددی بین 1 تا 31 |
| l | نام روز در هفته | شنبه |
| N | شماره روز در هفته، از 1 تا 7 | 1 (=شنبه) |
| S | حاوی عبارت "ام" | 25ام |
| w | شماره روز در هفته، از 0 تا 6 | 0 (=شنبه) |
| z | روز در سال | عددی بین 0 تا 365 |
| W | تعداد هفته گذشته از سال | 23 (=23امین هفته سال) |
| F | نام کامل ماه | مهر |
| m | ماه از سال بصورت دورقمی | عددی بین 01 تا 12 |
| M * | نام ماه از سال. مشابه F | فروردین |
| n | ماه از سال بصورت. تک رقمی برای اعداد تک رقمی | عددی بین 1 تا 12 |
| t | تعداد روز در ماه | عددی بین 29 تا 31 |
| L | نشانگر سال کبیسه | 1 برای کبیسه و 0 برای غیرکبیسه |
| o | سال چهاررقمی | 1388 |
| Y | سال چهاررقمی | 1366 |
| y | سال دورقمی | 87 |
| a | اوقات روز (am و pm) | ب.ظ و ق.ظ |
| A | اوقات روز بصورت کامل (am و pm) | بعد از ظهر و قبل از ظهر |
| B | زمان اینترنتی | عددی بین 000 تا 999 |
| g | ساعت در روز. تک رقمی برای اعداد تک رقمی | عددی بین 1 تا 12 |
| G | ساعت در روز. تک رقمی برای اعداد تک رقمی | عددی بین 0 تا 23 |
| h | ساعت در روز بصورت دورقمی | عددی بین 01 تا 12 |
| H | ساعت در روز بصورت دورقمی | عددی بین 00 تا 23 |
| i | دقیقه در ساعت بصورت دورقمی | عددی بین 00 تا 59 |
| s | ثانیه در ساعت بصورت دورقمی | عددی بین 00 تا 59 |
| u | میکروثانیه | مثل 54321 |
| e | شناسه موقعیت زمانی (Timezone) | UTC |
| I | مشخص کننده روز و شب | 1 برای روز و 0 برای شب |
| O | اختلاف ساعت جهانی (GMT) | 0330+ (برای ایران) |
| P | اختلاف ساعت جهانی (GMT) | 03:30+ (برای ایران) |
| T | مخفف شناسه موقعیت زمانی (Timezone) | MDT |
| Z | اختلاف ساعت جهانی بر اساس ثانیه | 12600+ (برای ایران) |
| c | نمایش زمان کامل | Y-m-d h:i:s P |
| r | نمایش زمان کامل | l j F Y h:i:s O |
| U | برچسب زمان (Timestamp) | 123588545 |
* کاراکتر M در تابع اصلی، سه حرف اول ماه مانند Jan و Mar غیره رو برمی گردونه که چون همانندسازی این روش در فارسی رایج و جالب نیست، از نام کامل ماه استفاده شده.


Google Chrome
تو چی فکر می کنی؟