ارتباط با ما ^
شما می توانید هرگونه:
نظر _ پیشنهاد _ انتقاد _ گزارش اشکال _ سوال _ و ...
را از طریق نشانی http://jdf.scr.ir/n با ما در میان بگذارید.
تمامی پیغام های شما بررسی خواهد شد و نتایج آن را در نسخه های بعدی خواهید دید.
و با عضویت در خبرنامه ی سایت ، به محض انتشار نسخه ی جدید ، مطّلع خواهید شد: http://jdf.scr.ir/newsletter
مقدّمه ^
^ تاریخچه ی فایل قدیمی jdf.php _ نرم افزار تبدیل تاریخ و زمان ^ فایل جدید jdf.php _ نرم افزار جدید تبدیل تاریخ و زمان
jdf.php به دلیل متن باز و رایگان بودن این نرم افزار ، مورد توجّه اکثر برنامه نویسان و طرّاحان سایت قرار گرفت و هنوز هم در بسیاری از سایت ها استفاده می شود. امّا با گذشت زمان ، افراد زیادی به عیب های این نرم افزار و توابع آن پی بردند. تا این که در سال 2011 میلادی ، ۲۲ بهمن ۱۳۸۹ ، نسخه ی ۲.۰۰ این نرم افزار ، توسّط ما ارائه شد. نرم افزار جدید ، کاملاً جدا از نرم افزار قدیمی بوده و حتّی توسّط شخص دیگری (به نام: رضا غلام پناهی) نوشته شده است. نسخه ی جدید ، جایگزین مناسبی برای نسخه ی قدیمی خواهد بود. باز هم تاکید می کنم: فقط نرم افزار جدید ، متعلّق به ماست و نرم افزار قدیمی ( نسخه های کمتر از ۲.۰۰ ) را ما ننوشته ایم.
^ دلیل شباهت نام ها در نرم افزار قدیمی و جدید
با توجّه به این که فایل جدید jdf.php ، توسّط شخص دیگری ساخته شده ، حتماً می پرسید : پس چرا همنام با نرم افزار قدیمی است. شاید فکر کنید ، فایل قدیمی را دستکاری کرده و به نام خودمان ثبت کرده ایم. این طور نیست. نرم افزار جدید ، کاملاً متفاوت بوده و متن آن توسّط ما نوشته شده است. تاکنون سایت های زیادی با استفاده از فایل قدیمی jdf.php ، ایجاد شده اند. ما نیز این نرم افزار را همنام با نرم افزار قدیمی ایجاد کردیم و سعی شده تا جایی که ممکن بوده ، نام توابع نیز مشابه با توابع قدیمی ، انتخاب شود تا بتوان به راحتی فایل jdf.php جدید را جایگزین نسخه ی قدیمی همین فایل در سایت ها نمود و سایت با هیچ مشکلی مواجه نشود.
^ عیوب نرم افزار قدیمی
1- خطا در محاسبات برخی توابع ، مثل: is_kabise برای تشخیص کبیسه بودن سال
2- تفاوت کاربرد برخی کاراکترهای پارامتر اوّل تابع jdate با کاربرد همان کاراکتر در تابع date اصلی ، مثلاً: Z بزرگ
3- عدم تناسب نام بعضی از توابع با نام تابع اصلی مشابه آن ، که باعث مشکل شدن کار با نرم افزار می گردید. مثلاً مشابه mktime باید jmktime باشد ، نه jmaketime
4- استفاده از محاسبات و توابع اضافی که باعث افزایش حجم و کاهش سرعت شده بودند. البتّه با توجّه به زمان ایجاد نرم افزار قدیمی ، این طبیعی است.
5- نداشتن امکانات اضافه ی مناسب برای تاریخ هجری شمسی و زبان شیرین فارسی
6- عدم دسترسی استفاده کنندگان به یک مرجع ثابت و مشخّص آموزشی و پشتیبانی در مورد نرم افزار قدیمی
7- افراد زیادی اقدام به اصلاح و تغییر در فایل نموده و نسخه های متفاوتی از آن در دسترس بود که هر کدام عیب هایی داشت.
^ مزایای نرم افزار جدید
1- باز نویسی توابع و رفع اکثر عیوب و خطاهای محاسباتی
2- استفاده از توابع جدید و کاهش حجم و افزایش سرعت نرم افزار تا چندین برابر
3- افزودن امکانات بسیار زیاد به نرم افزار و توانایی محاسبات جدید و افزایش دقّت محاسبات
4- امکان کنترل وسیع عملکرد و خروجی توابع و نرم افزار ، با افزودن پارامترهای اضافه و مناسب با زبان فارسی و تاریخ هجری شمسی
5- امکان ورود اعداد فارسی ، انگلیسی یا مخلوطی از هردو به توابع و تنظیم زبان اعداد خروجی ، همچنین تنظیم منطقه ی زمانی نرم افزار و خروجی به صورت آرایه یا عبارت به صورت دلخواه
6- حدّ اکثر هماهنگی با فایل قدیمی jdf.php و قابل جایگزین بودن به جای آن در سایت ها
7- وجود مرجع ثابت http://jdf.scr.ir جهت آموزش ، راهنمایی ، رفع اشکال و اطّلاع از آخرین نسخه
8- داشتن مجموعه ی کامل آموزشی و جدول های راهنمای توابع ، پارامترها و کاراکترها - قابل دانلود
9- متن باز (Open Source) و رایگان بودن نرم افزار
10- با عضویت در خبرنامه ی سایت به نشانی http://jdf.scr.ir/newsletter ، به محض انتشار نسخه ی جدیدتری از نرم افزار ، شما را مطّلع خواهیم ساخت.
^ روش استفاده از نرم افزار
اگر قبلاً از فایل قدیمی jdf.php استفاده کرده اید ، کار با این فایل جدید نیز به همان گونه خواهد بود. امّا حتماً راهنمای استفاده از نرم افزار را مطالعه نموده و از امکانات جدید بسیار متنوّع نرم افزار ، مطّلع شوید.
و اگر برای اوّلین بار قصد کار با این نرم افزار را دارید ، مجموعه ی آموزشی این نرم افزار ، به قدری کامل است که حتّی اگر با php آشنا نباشید هم می توانید از این فایل ، استفاده کنید. این مجموعه ، علاوه بر صفحات سایت ، برای دانلود نیز قرار داده شده است.
^ قوانین و حقوق نرم افزار
1- این نرم افزار ، کاملاً رایگان بوده و هرگونه فروش یا سوء استفاده ی مالی از آن ، ممنوع است.
2- نرم افزار جدید ، توسّط آقای رضا غلام پناهی نوشته شده و در سایت jdf.scr.ir ارائه می گردد. و اوّلین نسخه ی آن ( نسخه ی ۲.۰۰ ) ، در تاریخ ۲۲ بهمن ۱۳۸۹ ارائه گردید. نسخه های قدیمی تر که قبل از این تاریخ ارائه شده ، ربطی به ما ندارند.
3- سایت ها و وبلاگ های دیگر می توانند این نرم افزار را معرّفی نموده یا برای دانلود قرار دهند. امّا حتماً باید ذکر کنند که جدیدترین نسخه ی آن در سایت http://jdf.scr.ir موجود است. بهتر است برای دانلود به همین سایت لینک بدهند تا اوّلاً ، از پهنای باند خودمان استفاده شود. ثانیاً ، همیشه آخرین نسخه ی موجود ، دانلود گردد.
4- شما می توانید با توجّه به نیاز خودتان ، نرم افزار را اصلاح کنید یا تغییر دهید ، امّا اگر خواستید آن را برای دانلود قرار دهید ، حتماً باید ذکر کنید که دستکاری شده و با نسخه ی اصلی که از http://jdf.scr.ir دریافت می شود ، تفاوت دارد.
5- توابع اصلی gregorian_to_jalali و jalali_to_gregorian نیز جدید هستند و توسّط آقای رضا غلام پناهی نوشته شده اند. این توابع برای تبدیل تاریخ از میلادی به هجری شمسی و بالعکس ، استفاده می شوند. اگر قصد دارید از این توابع در نرم افزارهای خود استفاده کنید ، به نشانی http://jdf.scr.ir/jdf مراجعه فرمایید و با نکات و جزئیات این توابع ، آشنا شوید.
6- هویت نرم افزار و نشانی http://jdf.scr.ir جهت دریافت نسخه ی جدید ، در متن فایل نرم افزار نوشته شده اند و تغییر یا حذف آن ، تخلّف محسوب می گردد. استفاده کنندگان حق دارند از آخرین نسخه باخبر شوند.
7- مرجع اوّل راهنمایی و رفع اشکال این نرم افزار ، سایت http://jdf.scr.ir می باشد. لطفاً در هر کجا بحثی در مورد این نرم افزار صورت می گیرد ، این نشانی را ذکر کنید تا از اتلاف وقت و پرسش سوالاتی که قبلاً جواب داده شده اند ، جلوگیری شود.
8- برای ارتقاء نرم افزار و رفع عیوب آن ، صمیمانه از همه ی علاقه مندان دعوت به همکاری ، گزارش عیوب و بیان پیشنهادات می نماییم. خواهشمندیم در صورت اطّلاع از هر گونه مشکل و خطا در نرم افزار ، سریعاً ما را باخبر سازید. شما می توانید: نظرات ، پیشنهادات ، انتقادات ، گزارش اشکال و ... را از طریق نشانی http://jdf.scr.ir/n با ما در میان بگذارید.
توضیحات ^
تقویم و تاریخ هجری شمسی (خورشیدی) یکی از دقیق ترین شیوه های گاهشماری در جهان به حساب می آید که خوشبختانه هم اکنون در جمهوری اسلامی ایران به رسمیت شناخته شده و استفاده می شود.امّا متاسّفانه در فضای مجازی نمی توان به راحتی به گاهشماری هجری شمسی دست یافت و از آن در ساختار وب سایت ها استفاده نمود. البتّه تاکنون نرم افزارهایی در این زمینه ارائه گردیده ، امّا به دلیل رایگان نبودن یا برخوردار نبودن از امکانات و دقّت کافی ، هنوز در اکثر سایت های ما از تاریخ میلادی استفاده می گردد. و حتّی می توان گفت تقریباً در ساختمان اصلی سیستم هیچ سایتی از تاریخ هجری شمسی استفاده نمی شود.
یکی از نرم افزارهایی که در این زمینه ارائه گردید ، نرم افزار تقویم جلالی بود که سال ها قبل به زبان پی اچ پی به صورت متن باز و رایگان ارائه گردید و از آن زمان در بسیاری از سایت ها و نرم افزارهای پی اچ پی استفاده شد. امّا افسوس که هیچگاه نسخه ی دیگری توسّط سازندگان آن منتشر نگردید و عیوب بسیار زیاد آن اصلاح نشد. به همین دلیل ، افراد زیادی اقدام به دستکاری و ویرایش فایل نرم افزار نمودند و نسخه های متعدّدی از آن منتشر شد که هر کدام دارای عیوب خاص خود بودند. مشکل اصلی آن بود که برنامه نویسان و طرّاحان سایت ، هیچ نرم افزار معلوم و شناخته شده ای برای تبدیل تاریخ در دسترس نداشتند. فقط تعدادی فایل متفاوت و معیوب دستکاری شده را می توانستند در وب سایت ها بیابند.
تا این که سایت jdf.scr.ir در تاریخ 22 بهمن 1389 ، اقدام به انتشار یک نرم افزار جدید مشابه با تقویم جلالی قدیمی ، به زبان پی اچ پی نمود که به دلیل همنام بودن بسیاری از توابع آن با توابع قدیمی ، می توان آن را جایگزین فایل نرم افزار قدیمی در سایت ها نمود. امّا این نرم افزار جدید ، از سرعت ، دقّت ، امکانات و ویژگی های بیشتری برخوردار می باشد.
نرم افزار جدید تبدیل تاریخ و زمان ، علاوه بر ایجاد چند تابع کاربردی زمان برای تاریخ هجری شمسی ، امکانات و توانایی های بسیار بیشتری داشته و قابلیت استفاده در هسته ی مرکزی سایت را دارا می باشد. یعنی علاوه بر نمایش ساده ی عناصر تاریخ و زمان در صفحات سایت ، می توان تاریخ سایت را به صورت کامل به هجری شمسی تغییر داده و نرم افزارهای دیگر را طبق این تاریخ ، طرّاحی و تنظیم کرد.
از مزایای این نرم افزار ، می توان به موارد زیر اشاره نمود:
حجم ناچیز و سرعت بسیار زیاد نسبت به نرم افزار قدیمی # وجود مجموعه ی کامل آموزشی به زبان فارسی # پارامترهای اضافه برای کنترل دقیق توابع و خروجی ها # امکان اعمال اختلاف ساعت جهانی دلخواه در خروجی # تعیین زبان اعداد خروجی ( فارسی یا انگلیسی ) به دلخواه # احتساب روز شنبه به عنوان روز اوّل هفته در تمامی خروجی ها # توابع جدید تبدیل تاریخ میلادی به هجری شمسی و برعکس ، با خروجی آرایه یا متن ، به دلخواه # تابع تبدیل عناصر زمان ( هجری شمسی ) به برچسب زمان # تابع تبدیل برچسب زمان به آرایه ی عناصر مختلف تاریخ و زمان ( هجری شمسی ) # تابع بررسی صحیح بودن تاریخ هجری شمسی # تبدیل زبان اعداد موجود در متن خروجی ( فارسی یا انگلیسی ) # شبیه سازی توابع کاربردی زمان برای تاریخ هجری شمسی # امکان رفع خطاهای چند دقیقه ای زمان بعضی سرورها # جلو و عقب کشیده شدن ساعت در نیمه های اوّل و دوم سال ، به صورت خودکار # محاسبات و خروجی های بسیار متنوّع از جمله : # سال به حروف ، کامل یا خلاصه # نام فصل از سال به حروف یا شماره ی آن # نام ماه های هجری شمسی به حروف یا شماره ی آن # محاسبه ی نام باستانی برج ها # محاسبه ی نام حیوانی سال ها # تعداد روزهای گذشته یا باقی مانده از سال # درصد گذشته یا باقی مانده از سال # شماره ی روز از ماه ( هجری شمسی ) به حروف یا عدد # محاسبه ی دقیق سال هجری شمسی هفته ای با احتساب روز شنبه به عنوان آغاز هفته # شماره ی هفته در سال ، روز شنبه به عنوان آغاز هفته # نشانگر دقیق کبیسه بودن یا نبودن سال هجری شمسی # شماره ی سال ، 2 یا 4 رقمی # شماره ی ماه ، 1 یا 2 رقمی # شماره ی روز ، 1 یا 2 رقمی # شماره ی روز در هفته ، روز شنبه به عنوان آغاز هفته ، 0-6 یا 1-7 # محاسبه ی تعداد روزهای همان ماه از سال با احتساب اسفند سال های کبیسه # نمایش اوقات روز به فارسی ، کامل یا خلاصه # نشانگر طولانی تر بودن روزها در نیمه ی اوّل سال و جلو کشیدن ساعت # نام روز در هفته ، فارسی ، کامل و خلاصه # نمایش اختلاف ساعت جهانی ، در چند قالب مختلف # تاریخ و زمان کامل و مرکّب در قالب های دلخواه # نام منطقه ی زمانی تنظیم شده ، مخفّف و کامل # ساعت ، دقیقه ، ثانیه ، زمان اینترنتی ، برچسب زمان ، میکرو ثانیه و امکانات بسیار متنوّع دیگر ...
تابع مشابه | تعداد پارامترها |
توضیحات | نام تابع |
date | 5 | امّا با تاریخ هجری شمسی و امکانات و پارامترهای اضافه ، date مشابه تابع | jdate |
strftime | 5 | امـّا با تاریخ هجری شمسی و امکانات و پارامترهای اضافه ، strftime مشابه | jstrftime |
mktime | 8 | تبدیل زمـان ورودی (هجری شمسی) به برچسب زمانی اش به وقـت ســرور | jmktime |
getdate | 4 | تبدیل یک برچسب زمانی به آرایه ای از تاریخ هجری شمسی و عناصر زمـــان | jgetdate |
checkdate | 3 | بررسی صحیح بودن تاریخ هجری شمسی - با اعداد ورودی: سال ، روز ، ماه | jcheckdate |
- | 3 | تبدیل اعداد موجود در بین یک متن یا عبارت ، به اعداد انگلیسی یـــا فارسی | tr_num |
- | 2 | تبدیل اعداد مربوط به تاریخ و زمان به کلمات فارسی با خروجی آرایه یا متنی | jdate_words |
- | 4 | تبدیل تاریخ از میلادی به هجری شمسی - آرایه ای: روز, ماه, سال_ یا متنی | gregorian_to_jalali |
- | 4 | تبدیل تاریخ از هجری شمسی به میلادی - آرایه ای: روز, ماه, سال_ یا متنی | jalali_to_gregorian |
1- چه در نام توابع و چه در کاراکترهای ورودی ، بزرگی و کوچکی حروف ، اهمّیّت دارد. مثلاً اگر نام تابع jdate را به
صورت JDATE و یا حتّی jDate بنویسید ، عمل نخواهد کرد. در کاراکترها نیز به همین صورت است و حتّی بعضی از کاراکترها ، در نوع بزرگ و کوچکشان ، خروجی
های متفاوتی دارند. مثلاً در پارامتر اوّل تابع jdate کاراکتر (حرف) 'o' کوچک برای نمایش سال و 'O' بزرگ برای نمایش اختلاف ساعت است. این مسئله در
تمامی توابع ، پارامترها و کاراکترها باید رعایت شود.
2- ترتیب پارمترهای روز و ماه در توابع این نرم افزار ، ممکن است تفاوت داشته باشد. مثلاً در بعضی: سال,ماه,روز و در بعضی: سال,روز,ماه است. در این مورد دقّت نمایید.
3- تغییر ساعت رسمی در نیمه ی اوّل و دوم سال ، به صورت خودکار ، انجام خواهد شد. مثلاً در منطقه ی زمانی کشور جمهوری اسلامی ایران ، ( Asia/Tehran یا Iran ) ، در اوایل فروردین ، 1 ساعت به جلو ( IRDT , +04:30 , 16200 ) و در اواخر شهریور ، 1 ساعت به عقب ( IRST , +03:30 , 12600 ) ، تغییر خواهد یافت. توجّه: بعضی سرورها از تنظیمات استانداردی برخوردار نیستند و ممکن است زمان ایجاد این تغییر ، اندکی زودتر یا دیرتر از موقع باشد.
4- اگر قصد دارید خروجی را در صفحات سایت نمایش دهید ، توجّه داشته باشید که برای نمایش صحیح حروف فارسی ، بهتر است صفحات مورد نظر به صورت UTF-8 باشند :
<meta charset="utf-8"/>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
5- اگر قصد استفاده از خروجی ها در محاسبات نرم افزاری را داشتید ، حتماً زبان اعداد خروجی را انگلیسی ('en' در پارامتر پنجم تابع jdate و پارامتر چهارم تابع jgetdate ) تعیین نمایید. اعداد فارسی در محاسبات پی اچ پی شناسایی نمی شوند.
6- اعدادی که در پارامترها وارد می کنید ، به هیچ وجه نباید دارای صفر اضافه در سمت چپ باشند. مثلاً اعداد "020" یا '00056' یا '09' را حتماً به 20 یا 56 یا 9 تبدیل کرده ، سپس در توابع استفاده نمایید. در این مورد می توانید از (int) استفاده کنید:
$a='06';
$b=(int)($a);
این نکته را همیشه و همه جا در نظر داشته باشید. در بسیاری از توابع پی اچ پی ، باید رعایت شود و محدود به توابع مورد نظر ما نیست.
7- اگر قصد ویرایش و هرگونه تغییر در فایل نرم افزار را دارید ، حتماً به نکات زیر توجّه داشته باشید.
الف - به دلیل utf-8 بودن این فایل ، هرگز آن را با نرم افزارهای ویرایش متن ساده مثل نوت پد (Notepad) ویندوز ، ویرایش و ذخیره (Save) نکنید. برای این کار حتماً از ویرایشگرهای حرفه ای که مخصوص صفحات اینترنتی هستند ، استفاده نمایید.
ب - اگر قصد ارائه ی فایل ویرایش شده به دیگران را داشتید ، حتماً در سایت خود و درون فایل ، ذکر کنید که ویرایش شده و با نسخه ی اصلی که از jdf.scr.ir دریافت می گردد ، تفاوت دارد.
پ - اگر عیب یا خطایی را در توابع کشف کرده و قصد اصلاح آن را دارید ، حتماً ما را نیز از آن مطّلع سازید تا در نسخه های بعدی نرم افزار ، اصلاح گردد: http://jdf.scr.ir/n
از برچسب زمان 2147483647- تا 2147483647
از ۱۲۸۰/۰۹/۲۴ تا ۱۴۱۶/۱۰/۲۹ ، هجری شمسی
از 15-12-1901 تا 18-01-2038 ، میلادی گرگوری
اگر قبلاً از نرم افزار قدیمی ( jdf.php ، نسخه های کم تر از 2.00 ) استفاده نموده و آن را در سایت خود به کار گرفته اید ، برای کار با نرم افزار جدید ، باید از آخرین تغییرات آن مطّلع شوید و اگر قصد جایگزین نمودن فایل جدید به جای فایل قدیمی را دارید ، حتماً به این تغییرات توجّه فرمایید.
توابع زیر ، در نرم افزار جدید وجود ندارند ، امّا خواص آن ها در توابع دیگر یافت می شود.
تابع jmaketime : نام جدید و استاندارد این تابع
jmktime می باشد و از این پس با این نام از آن استفاده نمایید.
تابع days_of_year : به جای jdate('z',jmktime(12,0,0,$jm,$jd,1)) یا
jdate('z') از days_of_year($jm,$jd,$jy) استفاده کنید.
تابع lastday : به جای
jdate('t',jmktime(12,0,0,$jm,1,$jy)) یا jdate('t') از lastday($jm,$jd,$jy)
استفاده کنید.
تابع is_kabise : به جای jdate('L',jmktime(12,0,0,1,1,$jy)) یا
jdate('L') از is_kabise($jy) استفاده کنید.
تابع Num2Fa یا
Convertnumber2farsi : به جای tr_num($string,'fa') از Num2Fa($srting) استفاده کنید.
تابع
div : به جای (int)($a/$b) از div($a/$b) استفاده کنید.
تابع jtime : به جای time() از jtime() استفاده کنید.
توابع زیر هم ، در نسخه ی اصلی وجود ندارند :
pstrftime , TrimByLength , irtime , short_monthname , monthname , mstart
و در بعضی نسخه های قدیمی ، در ابتدای نام توابع از حرف
p استفاده شده ، امّا اکنون حرف j صحیح است. مثلاً pdate اشتباه بوده و jdate صحیح است.
درضمن ، در نرم افزار جدید ، روز شنبه به عنوان روز اوّل هفته محسوب می گردد و خروجی های مربوطه ، طبق این معیار ، تنظیم خواهند شد.
حالت پیشفرض برای منطقه ی زمانی ، 'Asia/Tehran' ( به وقت جمهوری اسلامی ایران ) و برای زبان اعداد خروجی ، 'fa' ( اعداد فارسی ) می باشد. جهت کسب اطّلاعات بیشتر ، راهنمای توابع را مطالعه فرمایید.
کاراکترهای پارامتر اوّل تابع jdate نیز ، بسیار افزایش یافته و متنوّع تر از نرم افزار قدیمی می باشد. لطفاً جداول مربوطه را مشاهده نمایید.
دارای 5 پارامتر که فقط پارامتر اوّل آن الزامی است ، بقیه ی پارامترها اختیاری اند و در صورت وارد نشدن یا خالی ''
گذاشتن آن ها ، مقدار پیشفرض برایشان وارد می شود.
این تابع مشابه تابع date است و تقریباً عملکردی مانند آن دارد ، امّا بر اساس تاریخ هجری شمسی عمل می کند.
وظیفه ی این تابع ، ایجاد قالب های دلخواهی از تاریخ و عناصر زمان می باشد که با قرار دادن چیدمان خاصی از کاراکترها در پارامتر اوّل آن ، قالب خروجی زمان را تعیین می نماییم.
string jdate ( string $format [, int $timestamp = time() [, string $none = "" [, string $timezone = "Asia/Tehran" [, string $tr_num = "fa" ]]]] )
jdate( $format , $timestamp , $none , $time_zone , $tr_num );
date(?) | الزام ؟ | مقدار پیشفرض | توضیحات | پارامترها |
+ | الزامی | '' |
قالب نمایشی اطلاعات خروجی | $format |
+ | اختیاری | time() = زمان فعلی | timestamp برچسب زمانی دلخواه ورودی | $timestamp |
! | اختیاری | '' |
این پارامتر را فعلاً خالی بگذارید | $none |
! | اختیاری | Asia/Tehran | منطقه ی زمانی جهت محاسبه ی اختلاف ساعت | $time_zone |
! | اختیاری | fa | زبان اعداد خروجی ، فارسی یا انگلیسی | $tr_num |
پارامترهای تابع jdate
format$ : پارامتر اوّل ، که با قرار دادن یک یا چند کاراکتر ( از جدول کاراکترهای پارامتر اوّل تابع jdate ) در آن ، قالب دلخواهی از زمان را در خروجی تابع دریافت خواهیم نمود. مثلاً کاراکتر 'f' کوچک ، برای نمایش نام فصل و کاراکتر 'F' بزرگ ، برای نمایش نام ماه به حروف است. حتّی می توان با کنار هم گذاشتن چند کاراکتر ، یک خروجی مرکّب ساخت. مثلاً 'H:i:s' یک خروجی مرکّب از ساعت و دقیقه و ثانیه را به ما خواهد داد. مثل 21:16:53 و اگر می خواهید یک کاراکتر را به صورت خام خارج کنید و تبدیل نشود ، فقط کافیست قبل از آن \ بگذارید. مثلاً 'H:\i:s' به صورت 21:i:53 خارج خواهد شد. دقّت داشته باشید که بزرگی و کوچکی حروف ، می تواند خروجی را تغییر دهد ، پس مواظب باشید ، کاراکترهای بزرگ و کوچک را اشتباهی وارد نکنید.
timestamp$ : پارامتر دوم ، که اختیاری بوده و مقدار ورودی آن ، برچسب زمان است. اگر برچسب زمان
خاصی را در این پارامتر قرار دهیم ، خروجی تابع کاملاً مطابق با همان زمان خاص خواهد بود ، انگار که الآن دقیقاً همان زمانی است که آن برچسب زمانی را
گرفته ایم. و امّا ، اگر این پارامتر را وارد نکنیم یا خالی ''
بگذاریم ، برچسب زمان فعلی در آن وارد خواهد شد و تمامی اطّلاعات خروجی ، مربوط به همین الآن
است که مقدار پیشفرض ، برابر است با خروجی تابع time در همین حالا.
none$ : پارامتر سوم ، فعلاً در این پارامتر ، چیزی وارد نکنید. در نسخه های بعدی فعّال خواهد شد.
time_zone$ : پارامتر چهارم ، برای تغییر منطقه ی زمانی است. معمولاً زمان سرور سایت ها به وقت گرینویچ
تنظیم شده است. امّا ما به زمانی نیاز داریم که به وقت تهران ، پایتخت جمهوری اسلامی ایران ، تنظیم شده باشد. شاید هم بخواهیم منطقه ی زمانی دیگری را
تعیین کنیم. با این پارامتر ، به راحتی می توانید منطقه ی زمانی مورد نظرتان را در خروجی تابع ، اعمال نمایید. مقدار پیشفرض این پارامتر ، 'Asia/Tehran' یا 'Iran' وارد
شده و اگر آن را خالی ''
بگذارید یا وارد نکنید ، خروجی تابع به وقت تهران است و اختلاف زمانی ، به صورت خودکار در خروجی اعمال می گردد. امّا اگر قصد تغییر
آن را دارید ، فهرست مناطق زمانی را می توانید در نشانی:
http://php.net/manual/en/timezones.php ، مشاهده نموده و منطقه ی مورد نظر خود را در این
پارامتر ، وارد کنید. درضمن ، برای تنظیم به وقت گرینویچ ، می توانید از 'GMT' استفاده نمایید. و اگر مایلید تنظیمات پیشفرض سرور در مورد منطقه ی زمانی اعمال گردد ، 'local' را (با حروف کوچک) در این پارامتر وارد کنید ، البتّه ممکن است سرور سایت با ساعت کشور شما تنظیم نشده باشد.
tr_num$ : پارامتر پنجم ، تنظیم کننده ی زبان اعداد خروجی می باشد و حالت پیشفرض آن 'fa' است ، یعنی اگر آن را وارد نکرده یا خالی بگذاریم ، اعداد خروجی از تابع ، اعداد فارسی خواهند بود. اعداد فارسی برای نمایش در صفحات سایت ، بسیار مناسب و زیبا هستند. امّا همیشه نمی توان از اعداد فارسی استفاده نمود. در مواقعی که قصد دارید محاسباتی بر روی خروجی تابع انجام دهید ، مثلاً آن ها را در عدد دیگری ضرب کنید یا با هم جمع ببندید یا ... ، حتماً باید اعداد را به صورت انگلیسی نوشته باشید تا بتوان از طریق توابع php بر روی آن ها عملیات ریاضی انجام داد. برای این که از این تابع ، اعداد به صورت انگلیسی خارج شوند ، فقط کافیست این پارامتر را برابر با 'en' قرار دهید. توجّه داشته باشید که بزرگی و کوچکی حروف ، مهم است و در این پارامتر ، حتماً باید 'en' یا 'fa' به حروف کوچک انگلیسی وارد گردند.
date(?) | مثال ۲ | مثال ۱ | دامنه | jdate() کاربرد کاراکتر در | کاراکتر |
- | - | - | - | کاراکترها با حروف کوچک | کوچک |
+ | ب.ظ | ق.ظ | ق.ظ | ب.ظ | اوقات روز - به صورت خلاصه | a |
! | ۴ | ۱ | ۱ - ۴ | شماره ی فصل (ربع) از سال | b |
+ | ۱۳۸۹/۱۱/۲۲ ،۰۹:۴۶:۳۱ +۰۳:۳۰ | ۱۳۹۰/۴/۴ ،۱۳:۰۸:۲۶ +۰۴:۳۰ | : طبق نمونه | Y/n/j ,H:i:s P :(ltr) ۱ قالب مرکّب | c |
+ | ۲۳ | ۹ | ۰۱ - ۳۱ | شماره ی روز از ماه - ۲ رقمی | d |
+ | Asia/Tehran | Greenwich | مناطق زمانی | منطقه ی زمانی تنظیم شده | e |
! | زمستان | تابستان | بهار تا زمستان | نام فصل با حروف فارسی | f |
+ | ۱۲ | ۷ | ۱ - ۱۲ | ساعت در روز -۱۲ساعته -۱یا۲رقمی | g |
+ | ۱۲ | ۰۷ | ۰۱ - ۱۲ | ساعت در روز - ۱۲ ساعته - ۲رقمی | h |
+ | ۲۱ | ۱۷ | ۰۰ - ۵۹ | دقیقه در ساعت - ۲ رقمی | i |
+ | ۲۳ | ۲ | ۱ - ۳۱ | شماره ی روز از ماه - ۱یا۲ رقمی | j |
! | ۱۶ | ۷۶.۲ | ۰ - ۱۰۰ | (**.?) در صد باقیمانده از سال | k |
+ | چهار شنبه | شنبه | شنبه تا جمعه | نام روز در هفته - کامل | l |
+ | ۱۰ | ۰۳ | ۰۱ - ۱۲ | شماره ی ماه از سال - ۲رقمی | m |
+ | ۱۰ | ۳ | ۱ - ۱۲ | شماره ی ماه از سال - ۱یا۲رقمی | n |
+ | ۱۳۸۹ | ۱۳۹۱ | شماره ی سال | سال هفته ای (به عدد) چهار رقمی | o |
! | دلو | جوزا | حمل تا حوت | نام باستانی برج ها | p |
! | پلنگ | گاو | موش تا خوک | نام حیوانی سال ها | q |
+ | ۰۹:۴۶:۳۱ +۰۳۳۰ جمعه، ۲۲ بهمن ۱۳۸۹ | ۱۳:۰۸:۲۶ +۰۴۳۰ شنبه، ۴ تیر ۱۳۹۰ | : طبق نمونه | H:i:s O Y F j ,l :(ltr) ۲ قالب مرکّب | r |
+ | ۱۷ | ۰۹ | ۰۰ - ۵۹ | شماره ی ثانیه در دقیقه - ۲ رقمی | s |
+ | ۳۰ | ۳۱ | ۳۱ | ۳۰ | ۲۹ | تعداد روزهای (همان) ماه | t |
+ | ۷۳۹۰۳۱ | ۰۰۰۰۰۰ | : طبق نمونه | میکرو ثانیه - ۶ رقمی | u |
! | هشتاد و نه | نود و یک | از تا نود و نه | سال به حروف - خلاصه ی دو رقمی | v |
+ | ۳ | ۰ | ۰ - ۶ | شنبه=۰ ،عدد روز در هفته (IR) | w |
! | منتظر باشید | منتظر باشید | به زودی | " در دست ساخت " | x |
+ | ۸۹ | ۹۱ | ۰۰ - ۹۹ | سال (به عدد) دو رقمی | y |
+ | ۳۰۴ | ۴۱ | ۰ - (۳۶۴|۳۶۵) | تعداد روز (کامل) گذشته از سال | z |
- | - | - | - | کاراکترها با حروف بزرگ | بزرگ |
+ | بعد از ظهر | قبل از ظهر | : طبق نمونه | اوقات روز _ کامل | A |
+ | ۷۱۰ | ۰۹۸ | ۰۰۰ - ۹۹۹ | GMTزمان اینترنتی،۱.۴۴ دق از۲۳:۰۰ | B |
! | ۱۵ | ۱۴ | ...|۱۵|۱۴|... | شماره ی قرن هجری شمسی | C |
+ | چ | ش | ش تا ج | حرف اوّل نام روز هفته، ش=شنبه | D |
! | منتظر باشید | منتظر باشید | به زودی | " در دست ساخت " | E |
+ | دی | خرداد | فروردین تا اسفند | نام ماه از سال - کامل | F |
+ | ۱۹ | ۷ | ۰ - ۲۳ | ساعت در روز - ۲۴ساعته -۱یا۲رقم | G |
+ | ۱۹ | ۰۷ | ۰۰ - ۲۳ | ساعت در روز - ۲۴ساعته -۲رقمی | H |
+ | ۱ | ۰ | ۰ | ۱ | نشانگر طولانی بودن روز = ۱ | I |
! | بیست و نه | دو | یک تا سی و یک | شماره ی روز از ماه به حروف | J |
! | ۸۳.۳ | ۱۴ | ۱۰۰ - ۰ | (**.?) در صد گذشته از سال | K |
+ | ۰ | ۱ | ۰ | ۱ | سال : کبیسه=۱ و غیر کبیسه=۰ | L |
+ | دی | خر | فر تا اس | نام ماه از سال - خلاصه | M |
+ | ۳ | ۷ | ۱ - ۷ | یک شنبه=۱ ،عدد روز در هفته (IR) | N |
+ | +۰۳۳۰ | +۰۴۳۰ | -۱۲۰۰ ، +۱۴۰۰ | ":" اختلاف ساعت جهانی - بدون | O |
+ | +۰۳:۳۰ | +۰۴:۳۰ | -۱۲:۰۰ ، +۱۴:۰۰ | ":" اختلاف ساعت جهانی - با | P |
! | ۶۱ | ۳۲۴ | (۳۶۵|۳۶۴) - ۰ | تعداد روز (کامل) باقی مانده از سال | Q |
! | منتظر باشید | منتظر باشید | به زودی | " در دست ساخت " | R |
+ | ام | ام | ام | "واژه ی "ام | S |
+ | IRST | IRDT | مخفف مناطق | مخفّف منطقه ی زمانی تنظیم شده | T |
+ | ۱۲۹۵۴۳۶۴۶۷ | ۱۲۴۳۹۵۵۳۴۶ | : طبق نمونه | timestamp (Unix) برچسب زمانی | U |
! | هزار و سیصد و هشتاد و نه | هزار و سیصد و نود و یک | : طبق نمونه | سال به حروف - کامل | V |
+ | ۴۳ | ۱۱ | ۰۰ - (۵۲|۵۳) | شماره ی این هفته در سال - ۲رقم | W |
! | منتظر باشید | منتظر باشید | به زودی | " در دست ساخت " | X |
+ | ۱۳۸۹ | ۱۳۹۱ | : طبق نمونه | سال (به عدد) چهار رقمی | Y |
+ | ۱۲۶۰۰ | ۱۶۲۰۰ | -۴۳۲۰۰ ، ۵۰۴۰۰ | اختلاف ساعت جهانی به ثانیه | Z |
توضیحات کاراکترهای پارامتر اوّل تابع jdate ^
حروف کوچک
a : نمایش اوقات روز به صورت خلاصه
از ساعت ( 00:00 یا 24:00 ) یا 12:00 شب تـــا 11:59 ظهر ، به صورت "ق.ظ"
و از ساعت 12:00 ظهر تـــا 23:59 یا 11:59 شب ، به صورت "ب.ظ" خواهد بود.
b : شماره ی فصل ( ربع ) از سال
در بهار : "1" و در تابستان : "2" و در پاییز : "3" و در زمستان : "4" خواهد بود.
c : یک نمونه قالب مرکّب به صورت Y/n/j ،H:i:s P
برای مثال: "۱۳۸۹/۱۱/۲۲ ,۰۹:۴۶:۳۱ +۰۳:۳۰"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
d : شماره ی روز از ماه (برج) ، به صورت 2 رقمی
از "01" تا "29" یا "30" یا "31"
مثلاً در یکم ، "01" و در بیست و دوم ، "22" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
e : نمایش منطقه ی زمانی که برای اعمال اختلاف ساعت جهانی ، تنظیم شده است.
مثلاً برای جمهوری اسلامی ایران ، "Asia/Tehran" ( یا "Iran" ) است.
f : نام فصل از سال به حروف فارسی
"بهار" یا "تابستان" یا "پاییز" یا "زمستان"
g : نمایش ساعت در روز ، 12 ساعته ، 1 یا 2 رقمی
از "1" تا "12"
مثلاً برای ساعت 7 صبح و 7 عصر ، به صورت "7" است.
اعداد تک رقمی به صورت تک رقمی و اعداد دو رقمی به صورت دو رقمی هستند.
h : نمایش ساعت در روز ، 12 ساعته ، 2 رقمی
از "01" تا "12"
مثلاً برای ساعت 7 صبح و 7 عصر ، به صورت "07" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
i : نمایش دقیقه در ساعت ، 2 رقمی
از "00" تا "59"
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
j : شماره ی روز از ماه (برج) ، به صورت 1 یا 2 رقمی
از "1" تا "29" یا "30" یا "31"
مثلاً در یکم ، "1" و در بیست و دوم ، "22" است.
اعداد تک رقمی به صورت تک رقمی و اعداد دو رقمی به صورت دو رقمی هستند.
k : نمایش درصد باقی مانده از سال ، با امکان یک رقم اعشار
از "100" تا "0"
مثلاً در اوّل سال ، "100" و در آخر سال ، "0" است.
مثل : "51.6" یا "27" یا "16.3" یا "78.2" یا "91" و ...
l : نام فارسی روز در هفته ، به صورت کامل
"شنبه" یا "یکشنبه" یا "دوشنبه" یا "سه شنبه" یا "چهارشنبه" یا "پنجشنبه" یا "جمعه"
m : شماره ی ماه ( برج ) از سال ، به صورت 2 رقمی
از "01" برای فروردین ، تا "12" برای اسفند
مثلاً در تیر ، "04" و در دی، "10" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
n : شماره ی ماه ( برج ) از سال ، به صورت 1 یا 2 رقمی
از "1" برای فروردین ، تا "12" برای اسفند
مثلاً در تیر ، "4" و در دی، "10" است.
اعداد تک رقمی به صورت تک رقمی و اعداد دو رقمی به صورت دو رقمی هستند.
o : عدد سال هفته ای ، 4 رقمی
شماره ی سال را به صورت 4 رقمی نشان می دهد.
امّا در هفته هایی که قسمتی از آن در سال قبل و بقیه ی آن در سال بعد است ، در تمام طول
آن هفته ، شماره ی سالی را نشان خواهد داد که قسمت بیشتر هفته در آن سال قرار دارد.
p : نمایش نام باستانی هر یک از برج های سال ، بر اساس صورت های فلکی
در فروردین: "حمل" _ در اردیبهشت: "ثور" _ در خرداد: "جوزا"
در تیر: "سرطان" _ در مرداد: "اسد" _ در شهریور: "سنبله"
در مهر: "میزان" _ در آبان: "عقرب" _ در آذر: "قوس"
در دی: "جدی" _ در بهمن: "دلو" _ در اسفند: "حوت"
q : نمایش نام حیوانی سال ها
طبق یک دوره ی 12 ساله که دائماً تکرار می شود ، از راست به چپ ، عبارت اند از:
"موش" _ "گاو" _ "پلنگ" _ "خرگوش" _ "نهنگ" _ "مار"
"اسب" _ "گوسفند" _ "میمون" _ "مرغ" _ "سگ" _ "خوک"
r : یک نمونه قالب مرکّب به صورت H:i:s O Y F j ،l
برای مثال: "۹:۴۶:۳۱ +۰۳۳۰ جمعه, ۲۲ بهمن ۱۳۸۹"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
s : نمایش ثانیه در دقیقه ، 2 رقمی
از "00" تا "59"
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
t : نمایش تعداد روز های آن ماه ( برج )
"29" یا "30" یا "31"
برای برج های 1 تا 6 ، "31" و برای برج های 7 تا 11 ، "30" می باشد.
برای برج 12 ( اسفند ) سال های کبیسه ، "30" و سال های غیر کبیسه ، "29" است.
u : نمایش میکرو ثانیه ، یک عدد 6 رقمی
مثلاً: "000000" یا "739031" یا "004126" و ...
ممکن است در بعضی سرورها فعّال نباشد و همیشه به صورت "000000" نمایش داده شود.
v : نمایش سال خلاصه شده به حروف فارسی
مثلاً: "هشتاد و نه" برای 1389 و "نود" برای 1390 و "چهار" برای 1404 و ...
w : عدد روز در هفته ، 0 تا 6
مثلاً: "0" برای شنبه و "1" برای یکشنبه و "6" برای جمعه
آغاز هفته از روز شنبه حساب می شود.
x : در دست ساخت
این کاراکتر ، در نسخه های بعدی نرم افزار ، فعّال خواهد شد.
منتظر بمانید.
y : عدد سال ، به صورت خلاصه ی 2 رقمی
از "00" تا "99"
مثلاً: "89" برای 1389 و "90" برای 1390 و "04" برای 1404 و ...
z : نمایش تعداد روزهای کامل سپری شده از سال
از "0" تا "364" یا "365"
مثلاً: "0" برای یکم فروردین و "19" برای بیستم فروردین و "50" برای بیستم اردیبهشت و ...
حروف بزرگ
A : نمایش اوقات روز به صورت کامل
از ساعت ( 00:00 یا 24:00 ) یا 12:00 شب تـــا 11:59 ظهر ، به صورت "قبل از ظهر"
و از ساعت 12:00 ظهر تـــا 23:59 یا 11:59 شب ، به صورت "بعد از ظهر" خواهد بود.
B : زمان اینترنتی به وقت جهانی ، یک عدد 3 رقمی
از "000" تا "999"
بر حسب 1.44 دقیقه ی گذشته از ساعت 23:00 به وقت گرینویچ
C : شماره ی قرن (سده ی) هجری شمسی
مثلاً از سال 1301 تا 1400 ، قرن "14" می باشد.
و از سال 1401 تا 1500 ، جزء قرن "15" ام هجری شمسی خواهد بود.
D : حرف اوّل نام روز در هفته
مثلاً: "ش" برای شنبه و "د" برای دوشنبه و ...
"ش" یا "ی" یا "د" یا "س" یا "چ" یا "پ" یا "ج"
E : در دست ساخت
این کاراکتر ، در نسخه های بعدی نرم افزار ، فعّال خواهد شد.
منتظر بمانید.
F : نام فارسی ماه ( برج ) از سال به صورت کامل
"فروردین" _ "اردیبهشت" _ "خرداد" _ "تیر" _ "مرداد" _ "شهریور"
"مهر" _ "آبان" _ "آذر" _ "دی" _ "بهمن" _ "اسفند"
G : نمایش ساعت در روز ، 24 ساعته ، 1 یا 2 رقمی
از "0" تا "23"
مثلاً: "7" برای ساعت 7 صبح و "19" برای ساعت 7 عصر می باشد.
اعداد تک رقمی به صورت تک رقمی و اعداد دو رقمی به صورت دو رقمی هستند.
H : نمایش ساعت در روز ، 24 ساعته ، 2 رقمی
از "00" تا "23"
مثلاً: "07" برای ساعت 7 صبح و "19" برای ساعت 7 عصر می باشد.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
I : نشانگر طولانی تر بودن روز و جلو کشیده شدن ساعت
طبق معمول ، در نیمه ی اوّل هر سال، ساعت رسمی کشور به جلو و در پایان نیمه ی اوّل
سال ، به عقب باز می گردد که در جمهوری اسلامی ایران ، مقدار تغییر ، 1 ساعت است.
اگر ساعت توسّط نرم افزار به صورت خودکار به جلو کشیده شده باشد ، مقدار این کاراکتر،
"1" خواهد بود وگرنه ، "0" است که در سرورهایی با تنظیمات استاندارد ، انجام می شود.
جلو کشیدن ، از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال انجام می شود.
J : نمایش شماره ی روز از ماه (برج) به حروف
از "یک" تا "سی و یک" ( یا "سی" یا "بیست و نه" )
K : نمایش درصد سپری شده از سال ، با امکان یک رقم اعشار
از "0" تا "100"
مثلاً در اوّل سال ، "0" و در آخر سال ، "100" است.
مثل : "48.4" یا "73" یا "83.7" یا "11.8" یا "9" و ...
L : نشانگر کبیسه بودن سال
"1" برای سال کبیسه و "0" برای سال غیر کبیسه
اسفند سال های کبیسه ، 30 روزه است ، امّا اسفند سال های غیر کبیسه ، 29 روزه است.
معمولاً در دوره های 4 ساله ، 3 سال معمولی و 1 سال کبیسه است ، امّا این دائمی نیست.
M : دو حرف اوّل نام ماه ( برج ) از سال
مثلاً: "ار" برای اردیبهشت و "دی" برای دی و ...
"فر" _ "ار" _ "خر" _ "تی" _ "مر" _ "شه" _ "مه" _ "آب" _ "آذ" _ "دی" _ "به" _ "اس"
N : عدد روز در هفته ، 1 تا 7
مثلاً: "7" برای شنبه و "1" برای یکشنبه و "6" برای جمعه
آغاز هفته از روز شنبه حساب می شود.
O : نمایش اختلاف ساعت جهانی تنظیم شده ، بدون دو نقطه
مثلاً برای جمهوری اسلامی ایران ، "0330" برای مواقع عادی
و "0430" برای روزهایی که ساعت به جلو کشیده شده است.
( از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال )
P : نمایش اختلاف ساعت جهانی تنظیم شده ، با دو نقطه
مثلاً برای جمهوری اسلامی ایران ، "03:30" برای مواقع عادی
و "04:30" برای روزهایی که ساعت به جلو کشیده می شود.
( از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال )
Q : نمایش تعداد روزهای کامل باقی مانده از سال
از "364" یا "365" تا "0"
مثلاً: "0" برای روز آخر سال
R : در دست ساخت
این کاراکتر ، در نسخه های بعدی نرم افزار ، فعّال خواهد شد.
منتظر بمانید.
S : نمایش واژه ی "ام"
T : نمایش مخفف منطقه ی زمانی که برای اعمال اختلاف ساعت جهانی ، تنظیم شده.
مثلاً برای جمهوری اسلامی ایران ، "IRST" برای مواقع عادی
و "IRDT" برای روزهایی که ساعت به جلو کشیده می شود.
( از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال )
U : برچسب زمان یونیکس ، Unix timestamp
تعداد ثانیه هایی که از روز 1/1/1970 میلادی ، دقیقاً ساعت 00:00:00 به وقت گرینویچ
گذشته است. عدد این برچسب بسیار مفید ، قابل تبدیل به هر قالبی از زمان می باشد
V : نمایش سال کامل به حروف فارسی
مثلاً: "هزار و سیصد و هشتاد و نه" برای 1389
و "هزار و سیصد و نود" برای 1390
و "هزار و چهارصد و چهار" برای 1404 و ...
W : شماره ی این هفته در سال ، 2 رقمی
از "01" تا "52" یا "53"
آغاز هر هفته از روز شنبه حساب می شود.
وقتی قسمتی از یک هفته در سال قبل و بقیه ی آن در سال بعد باشد، اگر بخش بیشتر هفته
در سال قبل باشد ، در تمام طول آن هفته ، شماره ی آن در سال قبل که "52" یا "53" است،
نمایش داده می شود. امّا اگر بخش بیشتر هفته در سال بعد باشد، در تمام طول همان هفته،
شماره ی آن در سال بعد که "01" است ، نمایش داده می شود . به عبارت دیگر ، آن هفته به
به صورت کامل ، جزء سالی به حساب خواهد آمد که قسمت بزرگ تر هفته در آن سال باشد .
X : در دست ساخت
این کاراکتر ، در نسخه های بعدی نرم افزار ، فعّال خواهد شد.
منتظر بمانید.
Y : عدد سال ، به صورت کامل 4 رقمی
مثلاً: "1389" و "1390" و "1404" و ...
Z : نمایش اختلاف ساعت جهانی تنظیم شده ، بر حسب ثانیه
مثلاً برای جمهوری اسلامی ایران ، "12600" برای مواقع عادی
و "16200" برای روزهایی که ساعت به جلو کشیده می شود.
( از ساعت 24.00 ،یکم فروردین تا سی ام شهریور هر سال )
آموزش استفاده از تابع jdate ^
ابتدا برای درک بهتر مطالب ، فقط از پارامتر اوّل این تابع استفاده می کنیم و شیوه ی گرفتن قالب های مختلفی از خروجی را یاد می گیریم. به مثال ها هم توجّه کنید که نکات خاصی را بیان می کنند. این ها فقط مثال هستند ، می توانید از هر کاراکتر دیگری هم به جای آن ها استفاده کنید.
در مثال اوّل ، یک قالب تک کاراکتری می سازیم و خروجی ( نوشته های قرمز رنگ ) را خواهیم داشت. نوشته های سیاه رنگ نیز توضیحات هستند. برای نمایش خروجی ها در صفحه ی مرورگر ، می توانید از echo استفاده کنید. مثلاً: echo jdate('F');
/* نکته: اهمّیّت حروف بزرگ و کوچک در نام تابع و کاراکترهای پارامترها */
jdate('F');// بهمن
jdate('f');// زمستان
jdaTe('f');// خطا ، نام تابع ، اشتباه است
/* ترکیب دو یا چند کاراکتر با حروف اضافه
در یک خروجی */
jdate('H i s');// 10 26 53
jdate('H:i:s');// 10:26:53
jdate('Y/n/j');// 1389/11/22
jdate('Y F j');// 22 بهمن
1389
jdate('V F J');// بیست و دو بهمن هزار و سیصد و هشتاد و
نه
/* خارج کردن بعضی از کاراکترها یا حروف ، به صورت خام و تبدیل نشده با گذاشتن \ قبل از آن ها
*/
/* منظور از کاراکتر ، تمامی حروف بزرگ و کوچک انگلیسی است که در جدول مربوطه نیز فهرست شده اند */
jdate('H:i:s');// 10:26:53
jdate('H:\i:s');// 10:i:53
jdate('H : \i\r\a\n');// 10 : iran
jdate('\HH');// H10
jdate('H\H');// 10H
jdate('H\ H');// 10 10
jdate('\HH\H');// H10H
jdate('\H\o\u : H _ \M\i\n : i _ \S\e\c : s');// Hou : 10 _ Min : 26 _ Sec : 53
/*
نکته: قبل از کاراکترهای خاص مثل ' و " حتماً از \
استفاده شود */
jdate(" \" H \" ");// " 10 "
jdate(' \' H \' ');// ' 10 '
/* البتّه بستگی به شرایط دارد */
jdate(' " H " ');// " 10 "
jdate(" ' H ' ");// ' 10 '
/* برای خارج کردن خام خود کاراکتر \ از سه تا \ در قبل از آن استفاده شود که با خودش می شوند چهار تا */
jdate('\\\\');//
\
jdate('\\\\H');// \10
jdate('\\\\\H');// \H
//
/* ترکیب حروف اضافه با کلمات خروجی
*/
jdate('F');
// بهمن
jdate('Fماه');
// بهمنماه
jdate('F ماه');
// بهمن ماه
jdate('ماه F');
// ماه بهمن
jdate('J');
// بیست و دو
jdate('Jم');
// بیست و دوم
jdate('Jمین');
// بیست و دومین
jdate('امروز : Jم F است');
// امروز : بیست و دوم بهمن است
jdate('امروز l است');
// امروز جمعه است
//
/* مرتّب کردن ترکیب حروف و اعداد اضافه در خروجی با ساختار پیچیده */
/* ترکیب های پیچیده ، ممکن است نامرتّب یا جا به جا
، نمایش داده شوند. */
/* حتماً آن ها را در بین تگ <span dir=ltr></span> قرار دهید. (چپ به راست) */
/* چند الگوی کاربردی زیر ،
از قبل مرتّب شده اند. می توانید از این ها استفاده نمایید. */
/* این الگوها را می توانید ویرایش کنید. حتماً بین تگ <span dir=ltr></span>
قرار گیرند. */
jdate('c');
// <span dir=ltr>۱۳۸۹/۱۱/۲۲ ,۱۰:۲۶:۵۳ +۰۳:۳۰</span>
// ۱۳۸۹/۱۱/۲۲ ,۱۰:۲۶:۵۳ +۰۳:۳۰
jdate('r');
// <span dir=ltr>۱۰:۲۶:۵۳ +۰۳۳۰ جمعه, ۲۲ بهمن ۱۳۸۹</span>
// ۱۰:۲۶:۵۳ +۰۳۳۰ جمعه, ۲۲ بهمن ۱۳۸۹
jdate('H:i:s O ,l, j F Y');
// <span dir=ltr>۱۰:۲۶:۵۳ +۰۳۳۰ ,جمعه, ۲۲ بهمن ۱۳۸۹</span>
// ۱۰:۲۶:۵۳ +۰۳۳۰ ,جمعه, ۲۲ بهمن ۱۳۸۹
jdate('H:i:s P | l, j / F / Y');
// <span dir=ltr>۱۰:۲۶:۵۳ +۰۳:۳۰ | جمعه, ۲۲ / بهمن / ۱۳۸۹</span>
// ۱۰:۲۶:۵۳ +۰۳:۳۰ | جمعه, ۲۲ / بهمن / ۱۳۸۹
jdate('H:i:s P | l, j F Y');
// <span dir=ltr>۱۰:۲۶:۵۳ +۰۳:۳۰ | جمعه, ۲۲ بهمن ۱۳۸۹</span>
// ۱۰:۲۶:۵۳ +۰۳:۳۰ | جمعه, ۲۲ بهمن ۱۳۸۹
jdate('l, J / F / V');
// <span dir=ltr>جمعه, بیست و دو / بهمن / هزار و سیصد و هشتاد و نه</span>
// جمعه, بیست و دو / بهمن / هزار و سیصد و هشتاد و نه
jdate('l, J F V');
// <span dir=ltr>جمعه, بیست و دو بهمن هزار و سیصد و هشتاد و نه</span>
// جمعه, بیست و دو بهمن هزار و سیصد و هشتاد و نه
jdate('H:i:s P ,Y/n/j');
// <span dir=ltr>۱۰:۲۶:۵۳ +۰۳:۳۰ ,۱۳۸۹/۱۱/۲۲</span>
// ۱۰:۲۶:۵۳ +۰۳:۳۰ ,۱۳۸۹/۱۱/۲۲
jdate('H:i:s ,Y/n/j');
// <span dir=ltr>۱۰:۲۶:۵۳ ,۱۳۸۹/۱۱/۲۲</span>
// ۱۰:۲۶:۵۳ ,۱۳۸۹/۱۱/۲۲
jdate('H:i:s e ,Y/n/j');
// <span dir=ltr>۱۰:۲۶:۵۳ IRST ,۱۳۸۹/۱۱/۲۲</span>
// ۱۰:۲۶:۵۳ Asia/Tehran ,۱۳۸۹/۱۱/۲۲
jdate('H:i:s T ,Y/n/j');
// <span dir=ltr>۱۰:۲۶:۵۳ IRST ,۱۳۸۹/۱۱/۲۲</span>
// ۱۰:۲۶:۵۳ IRST ,۱۳۸۹/۱۱/۲۲
مقدار پیشفرض برای پارامترهای اختیاری
در این تابع ، به غیر از پارامتر اوّل ، بقیه ی پارامترها اختیاری هستند. اگر پارامترهای اختیاری را وارد نکنید و یا مقدار آن ها را خالی ''
بگذارید (در این نرم افزار) ، مقدار پیشفرض برای آن ها وارد خواهد شد. به چند مثال زیر توجّه فرمایید.
مثلاً می خواهیم زبان اعداد خروجی ، انگلیسی باشد ، امّا بقیه ی پارامترهای اختیاری ، به صورت پیشفرض وارد گردند
jdate('H:i:s','','','','en');
و یا منطقه ی اختلاف ساعت جهانی را به وقت گرینویچ تنظیم کنیم ، امّا پارامترهای اختیاری دیگر ، به صورت پیشفرض باشند
jdate('H:i:s','','','GMT');
یا برچسب زمان دلخواه خود را در تابع وارد کنیم ، امّا پارامترهای اختیاری دیگر ، به صورت پیشفرض وارد شوند
jdate('H:i:s','1295436467');
و اگر خواستیم که همه ی پارامترهای اختیاری ، با مقادیر پیشفرض خود وارد شوند
jdate('H:i:s');
برطرف کردن خطای زمان سرور
ممکن است زمان سرور شما چند دقیقه خطا داشته باشد. برای رفع این خطا چندین راه وجود دارد.
راه اوّل ، تنظیم دقیق زمان سرور است. امّا اگر سرور متعلّق به شما نیست و از یک هاست (فضای کرایه ای) استفاده می کنید ، باید از روش های دیگر استفاده نمایید.
راه دوم ، خنثی کردن خطا در پارامتر دوم تابع jdate است. فقط کافیست مقدار این خطا را به ثانیه حساب کرده و در پارامتر دوم اعمال نمایید. مثلاً اگر زمان سرور شما 2 دقیقه و 27 ثانیه جلو است ، باید آن را به همین مقدار ، عقب بکشید. ابتدا 2 دقیقه را در عدد 60 ضرب می کنیم تا به ثانیه تبدیل شود ، سپس عدد حاصل (120) را با 27 جمع می کنیم. آنگاه پارامتر دوم تابع jdate را به صورت
jdate('H:i:s',time()-147);
وارد می کنیم تا 147 ثانیه به عقب کشیده شود. برای عقب کشیدن از تفریق ( - ) و برای جلو کشیدن از جمع ( + ) استفاده می نماییم.
راه سوم ، از طریق فایل نرم افزار (jdf.php) است. ابتدا آن را به وسیله ی یک ویرایشگر حرفه ای باز کنید. ( هشدار: به دلیل UTF-8 بودن فایل ، هرگز آن را با نوت پد معمولی ویندوز ، ویرایش یا ذخیره نکنید. ) سپس در ابتدای تابع jdate ، مقدار $T_sec=0; را از صفر به مقدار مورد نظرتان بر حسب ثانیه تغییر دهید. اگر قصد عقب کشیدن زمان را دارید ، آن را به صورت یک عدد منفی وارد کنید ، مثلاً:
$T_sec=-147;
راه چهارم ، خنثی کردن خطا در هنگام ذخیره یا نمایش زمان کنونی می باشد.
که بهترین راه برای اصلاح خطای زمان سرور ، همین راه است.
اگر قصد ذخیره ی برچسب زمان در دیتابیس را داشتید ، ابتدا خطای آن را با همان روش جمع یا تفریق ذکر شده ، خنثی کنید.
و اگر قصد نمایش زمان کنونی را در صفحات سایت دارید ، خطا را در پارامتر دوم توابع jdate یا jstrftime ، خنثی نمایید.
به این ترتیب ، در هنگام نمایش تاریخ های ذخیره شده در دیتابیس نیز ، خطای آن ها قبل از ذخیره کردن ، برطرف شده است.
اگر راهنمای این نرم افزار را مطالعه نموده و بر آن مسلّط شوید ، قادر خواهید بود خلّاقیت های زیادی به خرج داده و ابداعات جدیدی را از خود نشان دهید. به چند مثال کاربردی زیر توجّه بفرمایید.
توجّه: در ابتدا فایل نرم افزار را اضافه (include) نموده ایم ، سپس از توابع آن استفاده می کنیم.
$jdate=explode('_', jdate('a_b_c_d_e_f_g_h_i') );
ًمثلا: jdate('e') برابر است با $jdate[4];
محاسبه ی برچسب زمان متعلّق به روزهای دلخواه
$ts=time() - ( jdate('j',time(),'','','en') * 86400 ) + 86400; //روز اوّل همین ماه
$ts=jmktime(hou,min,sec,month,1,year); //روز اوّل ماه در تاریخ دلخواه
$ts=time() - ( jdate('j',time(),'','','en') * 86400 ); //روز آخر ماه قبل
$ts=jmktime(hou,min,sec,month,1,year)-86400; //روز آخر ماه قبل در تاریخ دلخواه
$ts=time() + ( ( jdate('t',time(),'','','en') - jdate('j',time(),'','','en') ) * 86400 ); //روز آخر همین ماه
$ts=jmktime(hou,min,sec,month+1,1,year)-86400; //روز آخر ماه در تاریخ دلخواه
$ts=time() + ( ( jdate('t',time(),'','','en') - jdate('j',time(),'','','en') ) * 86400 ) + 86400; //روز اوّل ماه بعد
$ts=jmktime(hou,min,sec,month+1,1,year); //روز اوّل ماه بعد در تاریخ دلخواه
$ts=time() - ( jdate('z','','','','en') * 86400 ); //روز اوّل امسال
$ts=jmktime(hou,min,sec,1,1,year); //روز اوّل سال در تاریخ دلخواه
$ts=time() - ( jdate('z','','','','en') * 86400 ) - 86400; //روز آخر سال قبل
$ts=jmktime(hou,min,sec,1,1,year) - 86400; //روز آخر سال قبل در تاریخ دلخواه
$ts=jmktime(hou,min,sec,1,1,year-1); //روز اوّل سال قبل از تاریخ دلخواه
$ts=jmktime(hou,min,sec,month,day,year-1); //یک سال قبل از تاریخ دلخواه
$ts=jmktime(hou,min,sec,month-1,day,year); //یک ماه قبل از تاریخ دلخواه
$ts=jmktime(hou,min,sec,month,day,year) - 86400; //یک روز قبل از تاریخ دلخواه
$ts=time() - 86400; //همین ساعت در دیروز
$ts=time() + 86400; //همین ساعت در فردا
$ts=time(); //همین حالا
$ts=time() - (3 * 86400); //همین ساعت در سه روز قبل
$ts=time() + (5 * 86400); //همین ساعت در پنج روز بعد
گرفتن خروجی کاراکتر دلخواه ، مثلاً مربوط به روز اوّل ماه (برج)
$test=jdate('کاراکتر دلخواه', time()-(jdate('d','','','','en')*86400)+86400 );
$test=jdate('کاراکتر دلخواه',jmktime(hou,min,sec,month,1,year));
حمایت مالی داوطلبانه
|
نرم افزارهای php بر روی سرور سایت اجرا می شوند و خروجی را برای بازدید کننده ارسال می کنند. پس قالب زمان نرم افزار ما در صفحه ی مقصد ، ثابت است و مطابق با زمان گشودن آن صفحه می باشد. ممکن است بخواهید ساعتی را در صفحه ی سایت خود قرار دهید که ثانیه های آن در حرکت و کلاً متغیّر و فعّال باشد. برای این کار باید از نرم افزاری استفاده کنید که در سیستم بازدید کننده اجرا شود. جاوا اسکریپت ، این امکان را برای شما فراهم می نماید. مثلاً با قرار دادن کد html و JavaScript زیر در صفحات سایت ، یک ساعت فعّال خواهید داشت. امّا توجّه داشته باشید که این ساعت با سیستم بازدید کننده تنظیم خواهد شد. یعنی اگر ساعت سیستم او چند دقیقه عقب یا جلو باشد ، این ساعت فعّال هم به همان صورت با خطا نشان داده می شود و هیچ ربطی به زمان سایت شما ندارد. البتّه می توان با اندکی ابتکار عمل و مخلوط کردن پی اچ پی و جاوا اسکریپت ، این ساعت را با سرور سایت خود تنظیم نمود. امّا باز هم با مشکلاتی همراه خواهد بود ، مثلاً در صفحاتی که آفلاین گشوده می شوند. به هرحال ، این بحث از محدوده ی فعّالیّت ما خارج است. در صورت تمایل ، می توانید اسکریپت های مربوطه را در وب سایت های دیگر بیابید.
<span id="show_time_1" style="font-size:18px;font-family:tahoma,arial;"> <script language="JavaScript"> function show_time_1(){ d=new Date(); H=d.getHours();H=(H<10)?"0"+H:H; i=d.getMinutes();i=(i<10)?"0"+i:i; s=d.getSeconds();s=(s<10)?"0"+s:s; document.getElementById('show_time_1').innerHTML=H+":"+i+":"+s; setTimeout("show_time_1()",1000);/* 1 sec */ } show_time_1(); </script> </span>
دارای 5 پارامتر که فقط پارامتر
اوّل آن الزامی است ، بقیه ی پارامترها اختیاری اند و در صورت وارد نشدن یا خالی ''
گذاشتن آن ها ، مقدار پیشفرض برایشان وارد می شود.
این تابع مشابه تابع strftime است و تقریباً عملکردی مانند آن دارد ، امّا بر اساس تاریخ هجری شمسی عمل می کند. روش استفاده از این تابع با تابع jdate شباهت زیادی دارد ، امّا تفاوتشان به این صورت است که در پارامتر اوّل تابع jdate یک قالب دلخواه را وارد می کنید و همه ی کاراکترها تبدیل خواهند شد ، مگر آن هایی که به همراه \ وارد شده باشند. امّا در پاراکتر اوّل تابع jstrftime همه ی کاراکترها به صورت خام و تبدیل نشده خارج می شوند ، مگر آن هایی که همراه با % وارد شده باشند. البتّه کاربرد بسیاری از کاراکترهای (حروف) قالب در دو تابع jdate و jstrftime با یکدیگر تفاوت دارد که کاربرد هرکدام را می توانید از جدول های راهنما بیابید. کاربرد بهتر این تابع برای مواردی است که قصد نمایش قالب هایی از تاریخ و زمان را در میان یک متن داریم ، یعنی برعکس تابع jdate .
string jstrftime ( string $format [, int $timestamp = time() [, string $none = "" [, string $timezone = "Asia/Tehran" [, string $tr_num = "fa" ]]]] )
jstrftime( $format , $timestamp , $none , $time_zone , $tr_num );
strftime(?) | الزام ؟ | مقدار پیشفرض | توضیحات | پارامترها |
+ | الزامی | '' |
رشته یا متن حاوی کاراکترهای قالب خروجی | $format |
+ | اختیاری | time() = زمان فعلی | timestamp برچسب زمانی دلخواه ورودی | $timestamp |
! | اختیاری | '' |
این پارامتر را فعلاً خالی بگذارید | $none |
! | اختیاری | Asia/Tehran | منطقه ی زمانی جهت محاسبه ی اختلاف ساعت | $time_zone |
! | اختیاری | fa | زبان اعداد خروجی ، فارسی یا انگلیسی | $tr_num |
پارامترهای تابع jstrftime ^
format$ : پارامتر اوّل ، که با قرار دادن یک یا چند کاراکتر ( از جدول کاراکترهای پارامتر اوّل تابع jstrftime ) در آن ، قالب دلخواهی از زمان را در خروجی تابع دریافت خواهیم نمود. مثلاً کاراکتر '%y' ، برای نمایش عدد سال دو رقمی یا کاراکتر '%S' ، برای نمایش ثانیه است. حتّی می توان با کنار هم گذاشتن چند کاراکتر ، یک خروجی مرکّب ساخت. مثلاً '%H:%M:%S' یک خروجی مرکّب از ساعت و دقیقه و ثانیه را به ما خواهد داد. مثل 21:16:53 و اگر می خواهید یک کاراکتر را به صورت خام خارج کنید و تبدیل نشود ، فقط کافیست آن را بدون % وارد نمایید. مثلاً '%H:M:%S' به صورت 21:M:53 خارج خواهد شد. دقّت داشته باشید که بزرگی و کوچکی حروف ، می تواند خروجی را تغییر دهد ، پس مواظب باشید ، کاراکترهای بزرگ و کوچک را اشتباهی وارد نکنید. جدول کاراکترهای پارامتر اوّل تابع jstrftime می تواند به شما کمک کند. درضمن ، کاربرد اکثر کاراکترها با تابع jdate متفاوت است. اگر به امکانات اضافه مثل نام روز ، ماه و سال به حروف و ... نیاز دارید ، از تابع jdate استفاده کنید.
نکته: به غیر از پارامتر اوّل (format) ، بقیه ی پارامترها مشابه با پارامترهای همنام در تابع jdate عمل می کنند.
timestamp$ : پارامتر دوم ، که اختیاری بوده و مقدار ورودی آن ، برچسب زمان است. اگر برچسب زمان
خاصی را در این پارامتر قرار دهیم ، خروجی تابع کاملاً مطابق با همان زمان خاص خواهد بود ، انگار که الآن دقیقاً همان زمانی است که آن برچسب زمانی را
گرفته ایم. و امّا ، اگر این پارامتر را وارد نکنیم یا خالی ''
بگذاریم ، برچسب زمان فعلی در آن وارد خواهد شد و تمامی اطّلاعات خروجی ، مربوط به همین الآن
است که مقدار پیشفرض ، برابر است با خروجی تابع time در همین حالا.
none$ : پارامتر سوم ، فعلاً در این پارامتر ، چیزی وارد نکنید. در نسخه های بعدی فعّال خواهد شد.
time_zone$ : پارامتر چهارم ، برای تغییر منطقه ی زمانی است. معمولاً زمان سرور سایت ها به وقت گرینویچ
تنظیم شده است. امّا ما به زمانی نیاز داریم که به وقت تهران ، پایتخت جمهوری اسلامی ایران ، تنظیم شده باشد. شاید هم بخواهیم منطقه ی زمانی دیگری را
تعیین کنیم. با این پارامتر ، به راحتی می توانید منطقه ی زمانی مورد نظرتان را در خروجی تابع ، اعمال نمایید. مقدار پیشفرض این پارامتر ، 'Asia/Tehran' یا 'Iran' وارد
شده و اگر آن را خالی ''
بگذارید یا وارد نکنید ، خروجی تابع به وقت تهران است و اختلاف زمانی ، به صورت خودکار در خروجی اعمال می گردد. امّا اگر قصد تغییر
آن را دارید ، فهرست مناطق زمانی را می توانید در نشانی:
http://php.net/manual/en/timezones.php ، مشاهده نموده و منطقه ی مورد نظر خود را در این
پارامتر ، وارد کنید. درضمن ، برای تنظیم به وقت گرینویچ ، می توانید از 'GMT' استفاده نمایید. و اگر مایلید تنظیمات پیشفرض سرور در مورد منطقه ی زمانی اعمال گردد ، 'local' را (با حروف کوچک) در این پارامتر وارد کنید ، البتّه ممکن است سرور سایت با ساعت کشور شما تنظیم نشده باشد.
tr_num$ : پارامتر پنجم ، تنظیم کننده ی زبان اعداد خروجی می باشد و حالت پیشفرض آن 'fa' است ، یعنی اگر آن را وارد نکرده یا خالی بگذاریم ، اعداد خروجی از تابع ، اعداد فارسی خواهند بود. اعداد فارسی برای نمایش در صفحات سایت ، بسیار مناسب و زیبا هستند. امّا همیشه نمی توان از اعداد فارسی استفاده نمود. در مواقعی که قصد دارید محاسباتی بر روی خروجی تابع انجام دهید ، مثلاً آن ها را در عدد دیگری ضرب کنید یا با هم جمع ببندید یا ... ، حتماً باید اعداد را به صورت انگلیسی نوشته باشید تا بتوان از طریق توابع php بر روی آن ها عملیات ریاضی انجام داد. برای این که از این تابع ، اعداد به صورت انگلیسی خارج شوند ، فقط کافیست این پارامتر را برابر با 'en' قرار دهید. توجّه داشته باشید که بزرگی و کوچکی حروف ، مهم است و در این پارامتر ، حتماً باید 'en' یا 'fa' به حروف کوچک انگلیسی وارد گردند.
=jdate() | مثال ۲ | مثال ۱ | دامنه | jstrftime() کاربرد در | کاراکتر |
- | - | - | - | مربوط به روز | Day |
'D' | چ | ش | ش تا ج | حرف اوّل نام روز هفته، ش=شنبه | %a |
'l' | چهار شنبه | شنبه | شنبه تا جمعه | نام روز در هفته - کامل | %A |
'd' | ۲۳ | ۹ | ۰۱ - ۳۱ | شماره ی روز از ماه - ۲ رقمی | %d |
- | ۲۳ | ۲ | ۱ - ۳۱ | ...شماره ی روز از ماه - امّا | %e |
- | ۳۰۵ | ۰۴۲ | ۰۰۱ - (۳۶۵|۳۶۶) | شماره ی روز در سال - ۳ رقمی | %j |
'N' | ۳ | ۷ | ۱ - ۷ | یک شنبه=۱ ،عدد روز در هفته (IR) | %u |
'w' | ۳ | ۰ | ۰ - ۶ | شنبه=۰ ،عدد روز در هفته (IR) | %w |
- | - | - | - | مربوط به هفته | Week |
- | ۴۳ | ۱۱ | ۰۰ - (۵۲|۵۳) | شماره خاص هفته در سال - ۲رقم | %U |
'W' | ۴۳ | ۱۱ | ۰۱ - (۵۲|۵۳) | شماره خاص هفته در سال - ۲رقم | %V |
- | ۴۳ | ۱۱ | ۰۰ - (۵۲|۵۳) | شماره خاص هفته در سال - ۲رقم | %W |
- | - | - | - | مربوط به ماه | Month |
'M' | دی | خر | فر تا اس | نام ماه از سال - خلاصه | %b |
'F' | دی | خرداد | فروردین تا اسفند | نام ماه از سال - کامل | %B |
'M' | دی | خر | فر تا اس | %b نام ماه از سال - خلاصه ، برابر | %h |
'm' | ۱۰ | ۰۳ | ۰۱ - ۱۲ | شماره ی ماه از سال - ۲رقمی | %m |
- | ۱۴ | ۱۳ | ...خارج قسمت | خارج قسمت سال ، بخش بر ۱۰۰ | %C |
- | ۸۹ | ۹۱ | ۰۰ - ۹۹ | سال هفته ای (به عدد) دو رقمی | %g |
'o' | ۱۳۸۹ | ۱۳۹۱ | : طبق نمونه | سال هفته ای (به عدد) چهار رقمی | %G |
'y' | ۸۹ | ۹۱ | ۰۰ - ۹۹ | سال (به عدد) دو رقمی | %y |
'Y' | ۱۳۸۹ | ۱۳۹۱ | : طبق نمونه | سال (به عدد) چهار رقمی | %Y |
- | - | - | - | مربوط به زمان | Time |
'H' | ۱۹ | ۰۷ | ۰۰ - ۲۳ | ساعت در روز - ۲۴ساعته -۲رقمی | %H |
'h' | ۱۲ | ۰۷ | ۰۱ - ۱۲ | ساعت در روز - ۱۲ ساعته - ۲رقمی | %I |
- | ۱۲ | ۷ | ۱ - ۱۲ | ...ساعت در روز -۱۲ساعته ، امّا | %l |
'i' | ۲۱ | ۱۷ | ۰۰ - ۵۹ | دقیقه در ساعت - ۲ رقمی | %M |
'A' | بعد از ظهر | قبل از ظهر | : طبق نمونه | اوقات روز _ کامل | %p |
'a' | ب.ظ | ق.ظ | ق.ظ | ب.ظ | اوقات روز - به صورت خلاصه | %P |
- | ۰۹:۴۶:۳۱ قبل از ظهر | ۰۱:۰۸:۲۶ بعد از ظهر | : طبق نمونه | :(dir="ltr") ۱ قالب مرکّب | %r |
- | ۰۹:۴۶ | ۱۳:۰۸ | : طبق نمونه | :(dir="ltr") ۲ قالب مرکّب | %R |
's' | ۱۷ | ۰۹ | ۰۰ - ۵۹ | شماره ی ثانیه در دقیقه - ۲ رقمی | %S |
- | ۰۹:۴۶:۳۱ | ۱۳:۰۸:۲۶ | : طبق نمونه | :(dir="ltr") ۳ قالب مرکّب | %T |
- | ۰۹:۴۶:۳۱ | ۰۱:۰۸:۲۶ | : طبق نمونه | :(dir="ltr") ۴ قالب مرکّب | %X |
'O' | +۰۳۳۰ | +۰۴۳۰ | -۱۲۰۰ ، +۱۴۰۰ | ":" اختلاف ساعت جهانی - بدون | %z |
'T' | IRST | IRDT | مخفف مناطق | مخفّف منطقه ی زمانی تنظیم شده | %Z |
- | - | - | - | مربوط به برچسب های تاریخ و زمان | Time... Stamps |
- | ۰۹:۴۶:۳۱ +۰۳:۳۰ جمعه، ۲۲ بهمن ۱۳۸۹ | ۱۳:۰۸:۲۶ +۰۴:۳۰ شنبه، ۴ تیر ۱۳۹۰ | : طبق نمونه | :(dir="ltr") ۵ قالب مرکّب | %c |
- | ۸۹/۱۱/۲۲ | ۹۰/۰۴/۰۴ | : طبق نمونه | :(dir="ltr") ۶ قالب مرکّب | %D |
- | ۱۳۸۹-۱۱-۲۲ | ۱۳۹۰-۰۴-۰۴ | : طبق نمونه | :(dir="ltr") ۷ قالب مرکّب | %F |
'U' | ۱۲۹۵۴۳۶۴۶۷ | ۱۲۴۳۹۵۵۳۴۶ | : طبق نمونه | timestamp (Unix) برچسب زمانی | %s |
- | ۸۹/۱۱/۲۲ | ۹۰/۰۴/۰۴ | : طبق نمونه | :(dir="ltr") ۸ قالب مرکّب | %x |
- | - | - | - | متفرّقه | Miscellaneous |
- | -سطر جدید- | -سطر جدید- | \n | ("\n") کاراکتر مخصوص سطر جدید | %n |
- | -فاصله ی تب- | -فاصله ی تب- | \t | Tab ("\t") کاراکتر مخصوص تب | %t |
% | % | % | % | ("%") کاراکتر مخصوص درصد | %% |
توضیحات کاراکترهای پارامتر اوّل تابع jstrftime ^
مربوط به روز _ Day
%a : حرف اوّل نام روز در هفته
مثلاً: "ش" برای شنبه و "د" برای دوشنبه و ...
"ش" یا "ی" یا "د" یا "س" یا "چ" یا "پ" یا "ج"
%A : نام فارسی روز در هفته ، به صورت کامل
"شنبه" یا "یکشنبه" یا "دوشنبه" یا "سه شنبه" یا "چهارشنبه" یا "پنجشنبه" یا "جمعه"
%d : شماره ی روز از ماه (برج) ، به صورت 2 رقمی
از "01" تا "29" یا "30" یا "31"
مثلاً در یکم ، "01" و در بیست و دوم ، "22" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%e : شماره ی روز از ماه (برج) ، به صورت 1 یا 2 رقمی
از "1 " تا "29" یا "30" یا "31"
مثلاً در یکم ، "1 " و در بیست و دوم ، "22" است.
اعداد تک رقمی به صورت تک رقمی به همراه یک کاراکتر فاصله (U+0020) در قبلشان
و اعداد دو رقمی به صورت دو رقمی هستند.
%j : نمایش شماره ی روز در سال
از "001" تا "365" یا "366"
مثلاً: "001" برای یکم فروردین و "051" برای بیستم اردیبهشت و "365" برای بیست و نهم اسفند و ...
تقریباً برابر با jdate('z')+1 ، البتّه به صورت سه رقمی
اعداد تک رقمی یا دو رقمی با افزودن 0 ها به قبلشان ، به صورت سه رقمی نمایش داده خواهند شد.
%u : عدد روز در هفته ، 1 تا 7
مثلاً: "7" برای شنبه و "1" برای یکشنبه و "6" برای جمعه
آغاز هفته از روز شنبه حساب می شود.
%w : عدد روز در هفته ، 0 تا 6
مثلاً: "0" برای شنبه و "1" برای یکشنبه و "6" برای جمعه
آغاز هفته از روز شنبه حساب می شود.
مربوط به هفته _ Week
%U : شماره ی این هفته در سال ، 2 رقمی _ روز جمعه به عنوان اوّل هفته
از "00" تا "52" یا "53"
وقتی قسمتی از یک هفته در سال قبل و بقیه ی آن در سال بعد باشد، اگر بخش بیشتر هفته در
سال قبل باشد ، در روزهایی از هفته که در سال بعد هستند ، عدد "00" نمایش داده می شود.
امّا اگر بخش بیشتر هفته در سال بعد باشد، در روزهایی از هفته که در سال بعد قرار دارند،
شماره ی آن در سال بعد که "01" است ، نمایش داده می شود. در هر دو صورت ،
در روزهایی از هفته که در سال قبل هستند ، اعداد "52" یا "53" به نمایش در خواهد آمد.
برای حساب کردن روزهای هفته در سال قبل و بعد ، آغاز هر هفته از روز جمعه حساب می شود.
%V : شماره ی این هفته در سال ، 2 رقمی
از "01" تا "52" یا "53"
آغاز هر هفته از روز شنبه حساب می شود.
وقتی قسمتی از یک هفته در سال قبل و بقیه ی آن در سال بعد باشد، اگر بخش بیشتر هفته
در سال قبل باشد ، در تمام طول آن هفته ، شماره ی آن در سال قبل که "52" یا "53" است،
نمایش داده می شود. امّا اگر بخش بیشتر هفته در سال بعد باشد، در تمام طول همان هفته،
شماره ی آن در سال بعد که "01" است ، نمایش داده می شود . به عبارت دیگر ، آن هفته به
به صورت کامل ، جزء سالی به حساب خواهد آمد که قسمت بزرگ تر هفته در آن سال باشد.
%W : شماره ی این هفته در سال ، 2 رقمی _ روز شنبه به عنوان اوّل هفته
از "00" تا "52" یا "53"
وقتی قسمتی از یک هفته در سال قبل و بقیه ی آن در سال بعد باشد، اگر بخش بیشتر هفته در
سال قبل باشد ، در روزهایی از هفته که در سال بعد هستند ، عدد "00" نمایش داده می شود.
امّا اگر بخش بیشتر هفته در سال بعد باشد، در روزهایی از هفته که در سال بعد قرار دارند،
شماره ی آن در سال بعد که "01" است ، نمایش داده می شود. در هر دو صورت ،
در روزهایی از هفته که در سال قبل هستند ، اعداد "52" یا "53" به نمایش در خواهد آمد.
برای حساب کردن روزهای هفته در سال قبل و بعد ، آغاز هر هفته از روز شنبه حساب می شود.
مربوط به ماه _ Month
%b : دو حرف اوّل نام ماه ( برج ) از سال
مثلاً: "ار" برای اردیبهشت و "دی" برای دی و ...
"فر" _ "ار" _ "خر" _ "تی" _ "مر" _ "شه" _ "مه" _ "آب" _ "آذ" _ "دی" _ "به" _ "اس"
%B : نام فارسی ماه ( برج ) از سال به صورت کامل
"فروردین" _ "اردیبهشت" _ "خرداد" _ "تیر" _ "مرداد" _ "شهریور"
"مهر" _ "آبان" _ "آذر" _ "دی" _ "بهمن" _ "اسفند"
%h : دو حرف اوّل نام ماه ( برج ) از سال
مثلاً: "ار" برای اردیبهشت و "دی" برای دی و ...
"فر" _ "ار" _ "خر" _ "تی" _ "مر" _ "شه" _ "مه" _ "آب" _ "آذ" _ "دی" _ "به" _ "اس"
مشابه کاراکتر %b
%m : شماره ی ماه ( برج ) از سال ، به صورت 2 رقمی
از "01" برای فروردین ، تا "12" برای اسفند
مثلاً در تیر ، "04" و در بهمن ، "10" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%C : خارج قسمت تقسیم شماره ی سال به عدد 100
برابر با دو رقم اوّل شماره ی سال
مثلاً "13" برای سال 1390 یا "14" برای سال 1400
%g : عدد سال هفته ای ، 2 رقمی
شماره ی سال را به صورت 2 رقمی نشان می دهد.
امّا در هفته هایی که قسمتی از آن در سال قبل و بقیه ی آن در سال بعد است ، در تمام طول
آن هفته ، شماره ی سالی را نشان خواهد داد که قسمت بیشتر هفته در آن سال قرار دارد.
%G : عدد سال هفته ای ، 4 رقمی
شماره ی سال را به صورت 4 رقمی نشان می دهد.
امّا در هفته هایی که قسمتی از آن در سال قبل و بقیه ی آن در سال بعد است ، در تمام طول
آن هفته ، شماره ی سالی را نشان خواهد داد که قسمت بیشتر هفته در آن سال قرار دارد.
%y : عدد سال ، به صورت خلاصه ی 2 رقمی
از "00" تا "99"
مثلاً: "89" برای 1389 و "90" برای 1390 و "04" برای 1404 و ...
%Y : عدد سال ، به صورت کامل 4 رقمی
مثلاً: "1389" و "1390" و "1404" و ...
مربوط به زمان _ Time
%H : نمایش ساعت در روز ، 24 ساعته ، 2 رقمی
از "00" تا "23"
مثلاً: "07" برای ساعت 7 صبح و "19" برای ساعت 7 عصر می باشد.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%I : نمایش ساعت در روز ، 12 ساعته ، 2 رقمی
از "01" تا "12"
مثلاً برای ساعت 7 صبح و 7 عصر ، به صورت "07" است.
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%l : نمایش ساعت در روز ، 12 ساعته ، 1 رقمی با کاراکتر فاصله یا 2 رقمی
از "1 " تا "12"
مثلاً برای ساعت 7 صبح و 7 عصر ، به صورت "7 " است.
اعداد تک رقمی به صورت تک رقمی به همراه یک کاراکتر فاصله (U+0020) در قبلشان
و اعداد دو رقمی به صورت دو رقمی هستند.
%M : نمایش دقیقه در ساعت ، 2 رقمی
از "00" تا "59"
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%p : نمایش اوقات روز به صورت کامل
از ساعت ( 00:00 یا 24:00 ) یا 12:00 شب تـــا 11:59 ظهر ، به صورت "قبل از ظهر"
و از ساعت 12:00 ظهر تـــا 23:59 یا 11:59 شب ، به صورت "بعد از ظهر" خواهد بود.
%P : نمایش اوقات روز به صورت خلاصه
از ساعت ( 00:00 یا 24:00 ) یا 12:00 شب تـــا 11:59 ظهر ، به صورت "ق.ظ"
و از ساعت 12:00 ظهر تـــا 23:59 یا 11:59 شب ، به صورت "ب.ظ" خواهد بود.
%r : یک نمونه قالب مرکّب
برای مثال: "۰۹:۴۶:۳۱ قبل از ظهر"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%R : یک نمونه قالب مرکّب
برای مثال: "۰۹:۴۶"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%S : نمایش ثانیه در دقیقه ، 2 رقمی
از "00" تا "59"
اعداد تک رقمی با افزودن 0 به قبلشان ، به صورت دو رقمی نمایش داده خواهند شد.
%T : یک نمونه قالب مرکّب
برای مثال: "۰۹:۴۶:۳۱"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%X : یک نمونه قالب مرکّب
برای مثال: "۰۹:۴۶:۳۱"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%z : نمایش اختلاف ساعت جهانی تنظیم شده ، بدون دو نقطه
مثلاً برای جمهوری اسلامی ایران ، "0330" برای مواقع عادی
و "0430" برای روزهایی که ساعت به جلو کشیده شده است.
( از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال )
البتّه این کاراکتر در تابع strftime به تنظیمات سرور وابسته است
%Z : نمایش مخفف منطقه ی زمانی که برای اعمال اختلاف ساعت جهانی ، تنظیم شده.
مثلاً برای جمهوری اسلامی ایران ، "IRST" برای مواقع عادی
و "IRDT" برای روزهایی که ساعت به جلو کشیده می شود.
( از ساعت 24.00 ، یکم فروردین تا سی ام شهریور هر سال )
البتّه این کاراکتر در تابع strftime به تنظیمات سرور وابسته است
مربوط به برچسب های تاریخ و زمان _ Time and Date Stamps
%c : یک نمونه قالب مرکّب
برای مثال: "۰۹:۴۶:۳۱ +۰۳:۳۰ جمعه، ۲۲ بهمن ۱۳۸۹"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%D : یک نمونه قالب مرکّب
برای مثال: "۸۹/۱۱/۲۲"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%F : یک نمونه قالب مرکّب
برای مثال: "۱۳۸۹-۱۱-۲۲"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
%s : برچسب زمان یونیکس ، Unix timestamp
تعداد ثانیه هایی که از روز 1/1/1970 میلادی ، دقیقاً ساعت 00:00:00 به وقت گرینویچ
گذشته است. عدد این برچسب بسیار مفید ، قابل تبدیل به هر قالبی از زمان می باشد
%x : یک نمونه قالب مرکّب
برای مثال: "۸۹/۱۱/۲۲"
امّا برای نمایش صحیح در صفحات html ، باید در بین تگ <span dir="ltr"></span> قرار گیرد.
متفرّقه _ Miscellaneous
%n : کاراکتر مخصوص سطر جدید ("\n")
جهت رفتن به سطر جدید در سورس
%t : کاراکتر مخصوص تب - ("\t") Tab
جهت ایجاد فاصله ی هوشمند تب
%% : کاراکتر مخصوص درصد ("%")
درج علامت درصد (%) در خروجی
آموزش استفاده از تابع jstrftime ^
ابتدا برای درک بهتر مطالب ، فقط از پارامتر اوّل این تابع استفاده می کنیم و شیوه ی گرفتن قالب های مختلفی از خروجی را یاد می گیریم. به مثال ها هم توجّه کنید که نکات خاصی را بیان می کنند. این ها فقط مثال هستند ، می توانید از هر کاراکتر دیگری هم به جای آن ها استفاده کنید.
در مثال اوّل ، یک قالب تک کاراکتری می سازیم و خروجی ( نوشته های قرمز رنگ ) را خواهیم داشت. نوشته های سیاه رنگ نیز توضیحات هستند. برای نمایش خروجی ها در صفحه ی مرورگر ، می توانید از echo استفاده کنید. مثلاً: echo jstrftime('%Y');
/* نکته: اهمّیّت حروف بزرگ و کوچک در نام تابع و کاراکترهای پارامترها */
jstrftime('%Y');// 1389
jstrftime('%y');// 89
jstrftimE('%y');// خطا ، نام تابع ، اشتباه است
/* ترکیب دو یا چند کاراکتر با حروف اضافه
در یک خروجی */
jstrftime('%H %M %S');// 10 26 53
jstrftime('%H:%M:%S');// 10:26:53
jstrftime('%Y/%m/%d');// 1389/11/22
jstrftime('%Y %B %e');// 22 بهمن
1389
/* خارج کردن کاراکترها یا حروف ، به صورت خام و تبدیل نشده با قرار ندادن % قبل از آن ها
*/
/* منظور از کاراکتر ، تمامی حروف بزرگ و کوچک انگلیسی است که در جدول مربوطه نیز فهرست شده اند */
jstrftime('%H:%M:%S');// 10:26:53
jstrftime('%H:M:%S');// 10:M:53
jstrftime('%H : iran');// 10 : iran
jstrftime('H%H');// H10
jstrftime('%HH');// 10H
jstrftime('%H %H');// 10 10
jstrftime('H%HH');// H10H
jstrftime('Hou : %H _ Min : %M _ Sec : %S');// Hou : 10 _ Min : 26 _ Sec : 53
/* نکته: قبل از کاراکترهای خاص مثل ' و " حتماً از \
استفاده شود */
jstrftime(" \" H \" ");// " 10 "
jstrftime(' \' H \' ');// ' 10 '
/* البتّه بستگی به شرایط دارد */
jstrftime(' " H " ');// " 10 "
jstrftime(" ' H ' ");// ' 10 '
/* برای خارج کردن خام خود کاراکتر % از یک % در قبل از آن استفاده شود که با خودش می شوند دو تا */
jstrftime('%%');//
%
jstrftime('%%%H');// %10
jstrftime('%%H');// %H
//
/* ترکیب حروف اضافه با کلمات خروجی
*/
jstrftime('امروز %A است');
// امروز جمعه است
//
/* مرتّب کردن ترکیب حروف و اعداد اضافه در خروجی با ساختار پیچیده */
/* ترکیب های پیچیده ، ممکن است نامرتّب یا جا به جا
، نمایش داده شوند. */
/* حتماً آن ها را در بین تگ <span dir=ltr></span> قرار دهید. (چپ به راست) */
/* چند الگوی کاربردی زیر ،
از قبل مرتّب شده اند. می توانید از این ها استفاده نمایید. */
/* این الگوها را می توانید ویرایش کنید. حتماً بین تگ <span dir=ltr></span>
قرار گیرند. */
jstrftime('%c');
// <span dir=ltr>۰۹:۴۶:۳۱ +۰۳:۳۰ جمعه، ۲۲ بهمن ۱۳۸۹</span>
// ۰۹:۴۶:۳۱ +۰۳:۳۰ جمعه، ۲۲ بهمن ۱۳۸۹
jstrftime('%r');
// <span dir=ltr>۰۹:۴۶:۳۱ قبل از ظهر</span>
// ۰۹:۴۶:۳۱ قبل از ظهر
jstrftime('%H:%M:%S %z ,%A, %e %B %Y');
// <span dir=ltr>۰۹:۴۶:۳۱ +۰۳۳۰ ,جمعه, ۲۲ بهمن ۱۳۸۹</span>
// ۰۹:۴۶:۳۱ +۰۳۳۰ ,جمعه, ۲۲ بهمن ۱۳۸۹
jstrftime('%H:%M:%S %z | %A, %e / %B / %Y');
// <span dir=ltr>۰۹:۴۶:۳۱ +۰۳۳۰ | جمعه, ۲۲ / بهمن / ۱۳۸۹</span>
// ۰۹:۴۶:۳۱ +۰۳۳۰ | جمعه, ۲۲ / بهمن / ۱۳۸۹
jstrftime('%H:%M:%S %Z | %A, %e / %B / %Y');
// <span dir=ltr>۰۹:۴۶:۳۱ IRST | جمعه, ۲۲ / بهمن / ۱۳۸۹</span>
// ۰۹:۴۶:۳۱ IRST | جمعه, ۲۲ / بهمن / ۱۳۸۹
jstrftime('%H:%M:%S %z , %Y/%m/%e');
// <span dir=ltr>۰۹:۴۶:۳۱ +۰۳۳۰ , ۱۳۸۹/۱۱/۲۲</span>
// ۰۹:۴۶:۳۱ +۰۳۳۰ , ۱۳۸۹/۱۱/۲۲
jstrftime('%H:%M:%S - %Y/%m/%e');
// <span dir=ltr>۰۹:۴۶:۳۱ - ۱۳۸۹/۱۱/۲۲</span>
// ۰۹:۴۶:۳۱ - ۱۳۸۹/۱۱/۲۲
jstrftime('%Y/%m/%e ,%A');
// <span dir=ltr>۱۳۸۹/۱۱/۲۲ ,جمعه</span>
// ۱۳۸۹/۱۱/۲۲ ,جمعه
jstrftime('%Y/%m/%e');
// <span dir=ltr>۱۳۸۹/۱۱/۲۲</span>
// ۱۳۸۹/۱۱/۲۲
مقدار پیشفرض برای پارامترهای اختیاری
در این تابع ، به غیر از پارامتر اوّل ، بقیه ی پارامترها اختیاری هستند. اگر پارامترهای اختیاری را وارد نکنید و یا مقدار آن ها را خالی ''
بگذارید (در این نرم افزار) ، مقدار پیشفرض برای آن ها وارد خواهد شد. به چند مثال زیر توجّه فرمایید.
مثلاً می خواهیم زبان اعداد خروجی ، انگلیسی باشد ، امّا بقیه ی پارامترهای اختیاری ، به صورت پیشفرض وارد گردند
jstrftime('%c','','','','en');
و یا منطقه ی اختلاف ساعت جهانی را به وقت گرینویچ تنظیم کنیم ، امّا پارامترهای اختیاری دیگر ، به صورت پیشفرض باشند
jstrftime('%c','','','GMT');
یا برچسب زمان دلخواه خود را در تابع وارد کنیم ، امّا پارامترهای اختیاری دیگر ، به صورت پیشفرض وارد شوند
jstrftime('%c','1295436467');
و اگر خواستیم که همه ی پارامترهای اختیاری ، با مقادیر پیشفرض خود وارد شوند
jstrftime('%c');
برطرف کردن خطای زمان سرور
ممکن است زمان سرور شما چند دقیقه خطا داشته باشد. برای رفع این خطا چندین راه وجود دارد.
راه اوّل ، تنظیم دقیق زمان سرور است. امّا اگر سرور متعلّق به شما نیست و از یک هاست (فضای کرایه ای) استفاده می کنید ، باید از روش های دیگر استفاده نمایید.
راه دوم ، خنثی کردن خطا در پارامتر دوم تابع jstrftime است. فقط کافیست مقدار این خطا را به ثانیه حساب کرده و در پارامتر دوم اعمال نمایید. مثلاً اگر زمان سرور شما 2 دقیقه و 27 ثانیه جلو است ، باید آن را به همین مقدار ، عقب بکشید. ابتدا 2 دقیقه را در عدد 60 ضرب می کنیم تا به ثانیه تبدیل شود ، سپس عدد حاصل (120) را با 27 جمع می کنیم. آنگاه پارامتر دوم تابع jstrftime را به صورت
jstrftime('%c',time()-147);
وارد می کنیم تا 147 ثانیه به عقب کشیده شود. برای عقب کشیدن از تفریق ( - ) و برای جلو کشیدن از جمع ( + ) استفاده می نماییم.
راه سوم ، از طریق فایل نرم افزار (jdf.php) است. ابتدا آن را به وسیله ی یک ویرایشگر حرفه ای باز کنید. ( هشدار: به دلیل UTF-8 بودن فایل ، هرگز آن را با نوت پد معمولی ویندوز ، ویرایش یا ذخیره نکنید. ) سپس در ابتدای تابع jstrftime ، مقدار $T_sec=0; را از صفر به مقدار مورد نظرتان بر حسب ثانیه تغییر دهید. اگر قصد عقب کشیدن زمان را دارید ، آن را به صورت یک عدد منفی وارد کنید ، مثلاً:
$T_sec=-147;
راه چهارم ، خنثی کردن خطا در هنگام ذخیره یا نمایش زمان کنونی می باشد.
که بهترین راه برای اصلاح خطای زمان سرور ، همین راه است.
اگر قصد ذخیره ی برچسب زمان در دیتابیس را داشتید ، ابتدا خطای آن را با همان روش جمع یا تفریق ذکر شده ، خنثی کنید.
و اگر قصد نمایش زمان کنونی را در صفحات سایت دارید ، خطا را در پارامتر دوم توابع jdate یا jstrftime ، خنثی نمایید.
به این ترتیب ، در هنگام نمایش تاریخ های ذخیره شده در دیتابیس نیز ، خطای آن ها قبل از ذخیره کردن ، برطرف شده است.
دارای 8 پارامتر است که مشخّصات یک زمان خاص را دریافت و برچسب زمانی مخصوص آن را در خروجی خود ارائه می دهد. این برچسب زمانی با توجّه به منطقه ی زمانی سرور شما تنظیم خواهد شد. این تابع نیز مشابه تابع mktime است ، امّا تاریخ ورودی به آن باید هجری شمسی باشد. پارامترهای اوّل تا ششم را باید وارد کنید تا تابع به صورت صحیح کار کند و اگر ساعت و دقیقه و ثانیه را نداشتید ، این سه پارامتر اوّل را برابر با 0 یا بهتر است ساعت را 12 قرار دهید. پارامتر هفتم و هشتم اختیاری است. به ترتیب پارامترهای تاریخ ، خیلی دقّت کنید تا جای ماه و روز را اشتباه ننویسید. پارامترهای این تابع ، به صورت زیر است:
int jmktime ([ int $hour = jdate("H") [, int $minute = jdate("i") [, int $second = jdate("s") [, int $month = jdate("n") [, int $day = jdate("j") [, int $year = jdate("Y") [, int $none = "" [, string $timezone = "Asia/Tehran" ]]]]]]]] )
jmktime( $hour , $minute , $second , $month , $day , $year , $none , $timezone );
پارامتر های تابع jmktime
hour$ : پارامتر اوّل ، ساعت ( 24 ساعته ، 23 - 0)
minute$ : پارامتر دوم ، دقیقه ( 59 - 0)
second$ : پارامتر سوم ، ثانیه (
59 - 0)
month$ : پارامتر چهارم ، ماه ( 12 - 1)
day$ :
پارامتر پنجم ، روز ( 31 - 1)
year$ : پارامتر ششم ، سال ( کامل 4 رقمی )
none$ : پارامتر هفتم ، در آن چیزی وارد نکنید. قبلاً $is_dst بود ، امّا در php5.1 منسوخ و در php7 حذف گردید. اکنون در ()jmktime آن را بی اثر نموده ایم.
timezone$ : پارامتر هشتم ، منطقه ی زمانی مورد نظرjmktime(6,15,34,11,22,1389);// خروجی: 1297392334
دارای 4 پارامتر که در این نرم افزار ، همه ی پارامترهای این تابع ، اختیاری هستند و اگر وارد نشوند یا خالی ''
گذاشته شوند ، مقدار پیشفرض برایشان وارد خواهد شد. این تابع ، مشابه تابع getdate است و یک برچسب زمانی را دریافت و بعضی از عناصر تاریخ و زمان را بر اساس همان برچسب ، به صورت یک آرایه خارج می نماید. امّا اطّلاعات خارج شده از این تابع ، بر اساس تاریخ هجری شمسی است.
array jgetdate ([ int $timestamp = time() [, string $none = "" [, string $timezone = "Asia/Tehran" [, string $tr_num = "fa" ]]]] )
jgetdate( $timestamp , $none , $time_zone , $tr_num );
پارامترهای تابع jgetdate
timestamp$ : پارامتر اوّل ، که مقدار ورودی آن ، یک برچسب زمانی است. این پارامتر در این نرم افزار ، اختیاری بوده و اگر آن را خالی ''
بگذارید یا وارد نکنید ، برچسب زمان فعلی در آن وارد خواهد شد که برابر است با خروجی تابع time در همین حالا. خروجی تابع ، کاملاً مطابق با برچسب زمانی وارد شده در این پارامتر خواهد بود.
none$ : پارامتر دوم ، فعلاً در این پارامتر ، چیزی وارد نکنید. در نسخه های بعدی فعّال خواهد شد.
time_zone$ : پارامتر سوم ، جهت انتخاب یک منطقه ی زمانی برای اعمال اختلاف ساعت در خروجی است که مقدار پیشفرض آن به وقت تهران ، پایتخت جمهوری اسلامی ایران 'Asia/Tehran' یا 'Iran' می باشد و با خالی ''
گذاشتن یا وارد نکردن این پارامتر ، خروجی به وقت تهران خواهد بود. برای تعیین وقت گرینویچ ، می توانید آن را برابر 'GMT' قرار دهید و اگر قصد تعیین منطقه ی زمانی دیگری را دارید ، می توانید در نشانی http://php.net/manual/en/timezones.php ، فهرست مناطق زمانی را مشاهده فرمایید. و اگر مایلید تنظیمات پیشفرض سرور در مورد منطقه ی زمانی اعمال گردد ، 'local' را (با حروف کوچک) در این پارامتر وارد کنید ، البتّه ممکن است سرور سایت با ساعت کشور شما تنظیم نشده باشد.
tr_num$ : پارامتر چهارم ، برای تعیین زبان اعداد خروجی است. مقدار پیشفرض این پارمتر ، 'en' می باشد و اگر آن را وارد نکرده یا خالی ''
بگزارید ، اعدادی که از این تابع به صورت آرایه خارج می شوند ، انگلیسی خواهند بود و می توان در توابع ریاضی برای انجام محاسبات پی اچ پی از آن ها استفاده نمود. اگر مایل بودید اعداد خروجی را فارسی کنید ، مقدار این پارامتر را 'fa' وارد نمایید.
//خروجی این تابع ، به صورت آرایه ی زیر است
array(
'seconds'=>"ثانیه",
'minutes'=>"دقیقه",
'hours'=>"ساعت",
'mday'=>"عدد روز",
'wday'=>"عدد روز در هفته ، 0 تا 6 ، صفر برای شنبه",
'mon'=>"عدد ماه",
'year'=>"عدد سال",
'yday'=>"تعداد روز کامل سپری شده از سال",
'weekday'=>"نام روز در هفته",
'month'=>"نام ماه",
0=>"برچسب زمانی"
);
دارای
3 پارامتر است که همگی باید وارد شوند ، چون اگر وارد نشوند ، اصلاً این تابع به چه دردی می خورد؟ این تابع ، مشابه تابع checkdate است ، امّا تاریخی که در
آن وارد می کنیم ، هجری شمسی می باشد. وظیفه ی این تابع ، بررسی صحیح یا غلط بودن تاریخ ورودی است. اگر صحیح باشد ، خروجی تابع هم true
است و اگر غلط باشد ، خروجی هم false خواهد بود. به ترتیب پارامترها دقّت کنید تا جای ماه و روز را اشتباه نگیرید.
نکته: خروجی به صورت boolean می باشد و برای تبدیل true و false به 1 و 0 باید نوع آن را به integer تغییر دهید.
bool jcheckdate ( int $month , int $day , int $year )
jcheckdate( $month , $day , $year );
پارامترهای تابع jcheckdate
month$ : پارامتر اوّل ، ماه ( 12 - 1 )
day$ : پارامتر دوم
، روز ( 31 - 1 )
year$ : پارامتر سوم ، سال ( کامل 4 رقمی )
jcheckdate(11,22,1389);// خروجی: bool(true)
jcheckdate(12,30,1389);// خروجی: bool(false)
jcheckdate(13,22,1389);// خروجی: bool(false)
(int) jcheckdate(13,22,1389);// خروجی: 0
(int) jcheckdate(11,22,1389);// خروجی: 1
دارای 3 پارامتر که فقط پارامتر اوّل آن الزامی بوده و بقیه ی پارامترها اختیاری هستند. ورودی پارامتر اوّل این تابع ، یک متن یا عبارت یا شماره یا مخلوطی از این ها می تواند باشد و خروجی هم همان ورودی
است ، فقط تمام اعداد موجود در آن عبارت ، طبق انتخاب خودمان ، از فارسی (عربی) به انگلیسی (لاتین) یا بالعکس ، تبدیل خواهند شد. اگر بخواهید یک عدد را در توابع ریاضی پی اچ پی
استفاده نموده و محاسباتی را روی آن انجام دهید ، حتّی یک ضرب یا جمع ساده ، حتماً باید از اعداد انگلیسی استفاده کنید. امّا برای استفاده در قالب و نمایش در صفحات سایت ،
اعداد فارسی خیلی بهتر خواهند بود. این تابع به شما کمک می کند تا اعداد را ترجمه کنید.
البتّه این خاصیت در پارامتر پنجم تابع jdate نیز وجود دارد و هرکجا از تابع jdate استفاده کردید ، می توانید مستقیماً و بدون استفاده از تابع tr_num ، زبان اعداد خروجی را تنظیم نمایید.
string tr_num ( string $str [, string $mod = "en" [, string $mf = "٫" ]] )
tr_num( $str , $mod , $mf );
پارامترهای تابع tr_num
str$ : پارامتر اوّل ، متن یا عبارت یا عدد یا مخلوطی از این ها. زبان اعداد ورودی اهمّیّتی ندارد.
mod$ : پارامتر دوم ، یک پارامتر اختیاری بوده و مقدار پیشفرض آن 'en' می باشد. یعنی اگر این پارامتر را وارد
نکنید یا خالی ''
بگذارید ، اعداد به انگلیسی تبدیل خواهند شد. و اگر می خواهید اعداد به فارسی تبدیل شوند ، این پارامتر را 'fa' وارد کنید. طبق معمول ، به بزرگی و کوچکی حروف توجّه داشته باشید ، یعنی 'fa' حتماً با حروف کوچک وارد شود.
mf$ : پارامتر سوم ، یک پارامتر اختیاری بوده و مقدار پیشفرض آن '٫' می باشد. (٫) کاراکتر ممیّز فارسی (و عربی) است.
این پارامتر ، مشخّص می کند که در پارامتر اوّل و خروجی تابع ، چه کاراکتری به عنوان ممیّز فارسی در نظر گرفته شود. مثلاً اگر قصد انگلیسی کردن اعداد را دارید و در ورودی از کاراکتر / به عنوان ممیّز جداساز اعشار استفاده کرده اید
یا اگر قصد فارسی کردن اعداد را دارید و مایلید در خروجی ، کاراکتر / به جای ممیّز نوشته شود ، مقدار این پارامتر را '/' قرار دهید. البتّه حالت استاندارد ممیّز فارسی ، همان کاراکتر '٫' U+066B می باشد و در صورت وارد نکردن یا خالی ''
گذاشتن این پارامتر ، '٫' اعمال می گردد.
توجّه داشته باشید که مقدار این پارامتر فقط به عنوان ممیّز اعداد فارسی حساب می شود و ممیّز اعداد انگلیسی ، همان کاراکتر '.' یعنی نقطه می باشد. پس در صورت وارد کردن '.' نقطه برای این پارامتر ، ممیّز اعداد فارسی و انگلیسی را یکسان تعریف نموده اید.
tr_num('۵ 5 abc ا ب پ');// out: 55 abc ا ب پ
tr_num('۵5tت','fa');// out: ۵۵ abc ا ب پ
tr_num('18.25','fa');// out: ۱۸٫۲۵
tr_num('18.25','fa','/');// out: ۱۸/۲۵
tr_num('18.25','fa','.');// out: ۱۸.
۲۵
tr_num('۱۸٫۲۵');// out: 18.25
tr_num('۱۸/۲۵');// out: 18/25
tr_num('۱۸/۲۵','en','/');// out: 18.25
دارای 2 پارامتر که فقطّ پارامتر اوّل آن الزامی می باشد. وظیفه ی این تابع ، دریافت اعداد مربوط به تاریخ و زمان و تبدیل آن به کلمات فارسی می باشد. اعداد مورد نظر باید در قالب یک آرایه در پارامتر اوّل وارد شوند و پارامتر دوم نیز مشخّص می کند که خروجی به صورت آرایه باشد یا متن (رشته).
( array | string )
mixed jdate_words ( array $array [, string $mod = ""] )
jdate_words( $array , $mod );
پارامترهای تابع jdate_words
array$ : پارامتر اوّل ، که باید به صورت یک آرایه ی خاص وارد شود. در این آرایه ، اعداد دلخواه را در متغیّرها وارد می کنیم ، امّا باید با نام هر متغیّر ، مشخّص کنیم که این عدد متعلّق به کدام یک از عناصر تاریخ و زمان می باشد. اگر خروجی تابع را بر روی آرایه تنظیم کنیم ، کلمات فارسی خروجی نیز در متغیّرهایی با همان نام ها خارج خواهند شد.
mod$ : پارامتر دوم ، اختیاری است و در صورت وارد نشدن یا خالی ''
گذاشتن آن ، خروجی تابع به صورت آرایه خواهد بود.
امّا اگر در این پارامتر چیزی وارد کنید ، خروجی به صورت متن (رشته) خواهد بود و کلمات و عبارات فارسی به وسیله ی همان مقدار وارد شده در پارامتر دوم ، از هم جدا می شوند.
jdate_words( array('ss'=>1390) );// out: array('ss'=>'هزار و سیصد و نود')
jdate_words( array('ss'=>1390) , ' _ ');// out: 'هزار و سیصد و نود'
jdate_words( array('ss'=>1390,'mm'=>5,'rr'=>20) );// out: array( 'ss'=>'هزار و سیصد و نود' , 'mm'=>'مرداد' , 'rr'=>'بیست' )
jdate_words( array('ss'=>1390,'mm'=>5,'rr'=>20) , ' _ ');// out: 'هزار و سیصد و نود _ مرداد _ بیست'
jdate_words( array('ff'=>2,'rh'=>3,'ss'=>90) );// out: array( 'ff'=>'تابستان' , 'rh'=>'سه شنبه' , 'ss'=>'نود' )
jdate_words( array('ff'=>2,'rh'=>3,'ss'=>90) , '|');// out: array('تابستان|سه شنبه|نود' )
نام های قابل استفاده در آرایه ی ورودی پارامتر اوّل (با حروف کوچک)
'ss' => شماره ی سال به صورت 2 یا 4 رقمی ، از 1200 تا 1499 و از 1900 تا 2099
'mm' => شماره ی ماه (برج) ، از 1 تا 12 وارد شود تا نام ماه (برج) خارج گردد
'rr' => شماره ی روز درماه ، از 1 تا 31 وارد شود تا به حروف خارج گردد
'rh' => شماره ی روز در هفته ، از 0 تا 6 وارد شود تا نام روز در هفته، خارج گردد
'sh' => شماره ی سال 4 رقمی شمسی وارد شود تا نام حیوانی سال ، خارج گردد
'mb' => شماره ی ماه (برج) وارد شود تا نام باستانی ماه ، خارج گردد
'ff' => شماره ی فصل ، از 1 تا 4 وارد شود تا نام فصل ، خارج گردد
'km' => شماره ی ماه (برج) وارد شود تا خلاصه ی نام ماه ، خارج گردد
'kh' => شماره ی روز در هفته وارد شود تا خلاصه ی نام روز در هفته ، خارج گردد
دارای 4 پارامتر بوده و وظیفه ی اصلی آن ، تبدیل تایخ میلادی به هجری شمسی می باشد. سه پارمتر اوّل آن حتماً باید وارد شوند ، امّا
پارامتر چهارم اختیاری است. تاریخی که به این تابع وارد می کنیم ، حتماً باید میلادی باشد تا در خروجی به هجری شمسی تبدیل گردد. خروجی این تابع در
حالت پیشفرض ، به صورت آرایه است ، امّا به وسیله ی پارامتر چهارم ، می توان خروجی را به عبارت (متن-رشته) تبدیل نمود.
# اگر قصد دارید از این تابع در نرم افزارهای خود استفاده نمایید ، لطفاً به نشانی http://jdf.scr.ir/jdf مراجعه فرمایید. لازم به ذکر است که این تابع جدید بوده و سریع تر ، دقیق تر و کم حجم تر از تابع قدیمی
همنام می باشد.
( array | string )
mixed gregorian_to_jalali ( int $year , int $month , int $day [, string $mod = "" ] )
gregorian_to_jalali( $g_y , $g_m , $g_d , $mod );
پارامترها تابع gregorian_to_jalali
g_y$ : پارامتر اوّل ، سال میلادی ( کامل 4 رقمی )
g_m$ : پارامتر دوم ، ماه میلادی ( 12- 1 )
g_d$ : پارامتر سوم ، روز
میلادی ( 31 - 1 )
mod$ : پارامتر چهارم ، یک پارامتر اختیاری است. تا زمانی که این پارامتر را وارد نکنید یا خالی ''
بگذارید ،
خروجی تابع به صورت یک آرایه از سال و ماه و روز هجری شمسی خواهد بود ، امّا اگر هر مقدار دلخواهی را ( در بین ''
) برای این پارامتر وارد نمایید ، نوع خروجی
به یک عبارت (متن-رشته) تغییر خواهد کرد که ترکیبی از سال و ماه و روز است و در بین سال و ماه و روز ، همان کاراکتری که در این پارامتر وارد نموده بودید ، به عنوان جدا
کننده ، قرار می گیرد. به مثال توجّه بفرمایید:
gregorian_to_jalali(2011,2,11);// خروجی: array(1389,11,22);
gregorian_to_jalali(2011,2,11,' / ');// خروجی: 1389 / 11 / 22
دارای 4 پارامتر بوده و وظیفه ی اصلی آن ، تبدیل تایخ هجری شمسی به میلادی می باشد. سه پارمتر اوّل آن حتماً باید وارد شوند ، امّا
پارامتر چهارم اختیاری است. تاریخی که به این تابع وارد می کنیم ، حتماً باید هجری شمسی باشد تا در خروجی به میلادی تبدیل گردد. خروجی این تابع در
حالت پیشفرض ، به صورت آرایه است ، امّا به وسیله ی پارامتر چهارم ، می توان خروجی را به عبارت (متن-رشته) تبدیل نمود.
# اگر قصد دارید از این تابع در نرم افزارهای خود استفاده نمایید ، لطفاً به نشانی http://jdf.scr.ir/jdf مراجعه فرمایید. لازم به ذکر است که این تابع جدید بوده و سریع تر ، دقیق تر و کم حجم تر از تابع قدیمی
همنام می باشد.
( array | string )
mixed jalali_to_gregorian ( int $year , int $month , int $day [, string $mod = "" ] )
jalali_to_gregorian( $j_y , $j_m , $j_d , $mod );
پارامترها تابع jalali_to_gregorian
j_y$ : پارامتر اوّل ، سال هجری شمسی ( کامل 4 رقمی )
j_m$ : پارامتر دوم ، ماه هجری شمسی ( 12- 1 )
j_d$ : پارامتر سوم ،
روز هجری شمسی ( 31 - 1 )
mod$ : پارامتر چهارم ، یک پارامتر اختیاری است. تا زمانی که این پارامتر را وارد نکنید یا خالی ''
بگذارید ،
خروجی تابع به صورت یک آرایه از سال و ماه و روز میلادی خواهد بود ، امّا اگر هر مقدار دلخواهی را ( در بین ''
) برای این پارامتر وارد نمایید ، نوع خروجی به یک
عبارت (متن-رشته) تغییر خواهد کرد که ترکیبی از سال و ماه و روز است و در بین سال و ماه و روز ، همان کاراکتری که در این پارامتر وارد نموده بودید ، به عنوان جدا کننده ، قرار
می گیرد. به مثال توجّه بفرمایید:
jalali_to_gregorian(1389,11,22);// خروجی: array(2011,2,11);
jalali_to_gregorian(1389,11,22,' - ');// خروجی: 2011 - 2 - 11
برای استفاده از توابع و امکانات نرم افزار ، ابتدا باید آن را به صفحه یا مکانی که قصد استفاده از آن را دارید ، اضافه کنید. می توانید کلّ متن آن را در مکان مورد نظرتان کپی کنید ، امّا این کار عاقلانه ای نیست ، چون اگر در همه ی فایل ها این کار را انجام دهید ، حجم بسیار زیادی را بیهوده تلف کرده اید. پس بهتر است فقط یک عدد از فایل نرم افزار (jdf.php) را در مکانی ثابت قرار داده و آن را در تمامی صفحات و فایل های مورد نیازتان include (شامل) کنید. و از include_once استفاده کنید ، تا اگر بیش از یک بار در یک صفحه اضافه شد با پیغام خطا مواجه نشوید.
در مثال اوّل ، فایل jdf.php در همان پوشه و در کنار فایل شما قرار دارد:
include_once('jdf.php');
در مثال بعد ، فایل jdf.php در یک پوشه به نام example قرار دارد که این پوشه در کنار فایل شماست:
include_once('example/jdf.php');
و در این جا فایل شما در یک پوشه به نام mydir قرار دارد که این پوشه در کنار فایل jdf.php است:
include_once('../jdf.php');
اکنون دو پوشه داریم که در کنار هم قرار دارند. نام یکی ، example و فایل jdf.php در آن است. نام دیگری mydir و فایل شما در آن است.
include_once('../example/jdf.php');
با اندکی دقّت در مثال های بالا متوجّه خواهید شد که برای نشان دادن آدرس یک فایل ، از دو نقطه ( .. ) به عنوان بازگشت به پوشه ی عقب تر ، استفاده می شود. مثلاً برای بازگشت به سه پوشه عقب تر: /../../..
امّا روش بالا فقط برای بعضی مواقع کاربرد دارد. در بعضی جاها نشانی فایل شما ثابت نیست. مثلاً اگر بخواهیم فایل jdf.php را در قالب یک سایت اضافه کنیم تا برای نمایش تاریخ از آن استفاده نماییم ، نشانی صفحات سایت با هم تفاوت دارد. راه حل چیست؟
روش بهتری نیز برای شناساندن آدرس محلّ فایل jdf.php برای include کردن ، وجود دارد.
با استفاده از نشانی های نمادین. باید
نشانی فایل jdf.php را به صورتی بنویسید که در همه جا یکسان خوانده شود. در php با استفاده از متغیّر زیر ، نشانی نمادین پوشه ی DOCUMENT_ROOT سایت را خواهیم
داشت. پوشه ی DOCUMENT_ROOT به صورت عادی ، ریشه ی سایت و همان پوشه ای است که صفحه ی اوّل سایتتان در آن قرار گرفته.
یعنی پوشه ی نمادین DOCUMENT_ROOT
باید همان پوشه ی public_html یا میانبر آن www باشد. امّا برای اطمینان می توانید با echo ، نشانی این پوشه را مشاهده نمایید.
echo $_SERVER['DOCUMENT_ROOT'];
مثلاً یک پوشه به نام example را در پوشه ی ذکر شده ( که نام آن معمولاً public_html است ) ، ایجاد کرده و فایل jdf.php را در آن قرار می دهیم. حال ، در هرکجا نیاز به افزودن فایل jdf.php بود ، به صورت زیر عمل می کنیم:
include_once($_SERVER['DOCUMENT_ROOT'].'/example/jdf.php');
کلّ آدرس را در پرانتز ،
قسمت ثابت را در ''
گذاشته و قسمت متغیّر را با یک نقطه به آن وصل می کنیم
مثالی دیگر: شاید بخواهید فایل jdf.php را در پوشه ی قبل از ( DOCUMENT_ROOT یا public_html ) ، یعنی همان پوشه ای که پوشه ی ( DOCUMENT_ROOT یا public_html ) در آن قرار دارد ، بگذارید. مثلا یک پوشه با نام jdf_dir را در پوشه ی قبل از ( DOCUMENT_ROOT یا public_html ) ، ایجاد می کنیم و فایل jdf.php را در آن می گذاریم. سپس در هرکجا که قصد include کردن آن را داشتیم ، فقط کافیست:
include_once($_SERVER['DOCUMENT_ROOT'].'/../jdf_dir/jdf.php');
به عقب برگشتیم ، سپس به سمت فایل رفتیم ( DOCUMENT_ROOT یا public_html ) با دونقطه ( ../ ) ، یک
پوشه از
برای این که بتوانیم به راحتی از این نرم افزار استفاده کنیم ، باید با توابع ، پارامترها و کاراکترهایی که در آن به کار رفته است ، آشنا شویم. در ابتدا با اصطلاحاتی که به کار می بریم ، آشنا شوید.
برچسب زمان = TimeStamp
برچسب زمان(Unix) ، یک عدد بر حسب ثانیه است که می توان آن را نوعی شماره ی شناسنامه یا اثر انگشت
برای زمان دانست. یعنی هر یک ثانیه که می گذرد ، یک واحد به این عدد اضافه می گردد. امّا این عدد از چه زمانی آغاز به شمارش شده ؟ یعنی چه وقت برابر با
0 بوده ؟ برچسب زمانی که ما اکنون از آن استفاده می کنیم ، از روز 1/1/1970 میلادی ، دقیقاً ساعت 00:00:00 به وقت گرینویچ (GMT) ، شروع به شمارش شده
است و از آن زمان تا کنون ، هر 1 ثانیه که می گذرد ، 1 واحد به آن افزوده می شود. به عبارت دیگر می توان گفت ، تعداد ثانیه هایی است که از زمان ذکر
شده می گذرد.
امّا این برچسب چه استفاده هایی دارد؟
فرض کنید پلیس راهنمایی و رانندگی ، یک خودرو متخلّف را دیده و می خواهد اطّلاعات آن را
ثبت کند. اگر بخواهد برای هر خودرو یک فرم چند صفحه ای را از نام و نام خانوادگی و آدرس و شماره ی تلفن و نوع و رنگ خودرو و ... ، تکمیل کند ، برای هر خودرو ،
نیم ساعت وقت لازم دارد. امّا فقط کافیست شماره ی پلاک خودرو را یادداشت کند. با برداشتن همین شماره ی چند رقمی و ورود آن به رایانه ، تمامی اطّلاعات
مربوط به خودرو و مالک را در اختیار خواهد داشت.
برچسب زمان هم کاربردی این چنین دارد. مثلاً سایت شما برای ذخیره ی یک مطلب جدید ، لازم نیست یک
عبارت طولانی را به عنوان تاریخ ثبت مطلب ، ذخیره کند. مثلاً به جای " جمعه , 22 / بهمن / 1389 - 16:07:53 " ، فقط کافیست برچسب زمانی لحظه ی ثبت مطلب را ذخیره کند. این
برچسب ، فقط یک عدد چند رقمی است ، امّا در موقع لزوم می توان با وارد کردن همین عدد کوتاه در توابع مربوطه ، هر نوع قالب دلخواهی از تاریخ و زمان را
تحویل گرفت که دقیقاً متعلّق به همان لحظه ای است که برچسب زمان را گرفته اید. مثلاً می توانید ساعت و دقیقه و ثانیه و سال و ماه و روز و اطّلاعات بسیار زیاد
دیگری را در مورد آن لحظه دریافت نمایید. می توان گفت ، این عدد کوتاه ، بیش از چندین صفحه اطّلاعات مفید مربوط به همان لحظه را در خود ذخیره کرده
است.
برچسب زمانی که در مورد آن توضیح دادیم ، متعلّق به یونیکس است و در پی اچ پی از آن استفاده می گردد. برچسب دیگری هم هست
که در جاوا اسکریپت استفاده می شود و سه رقم از برچسب زمانی یونیکس ، بیشتر است. در واقع برحسب هزارم ثانیه است و اگر سه رقم آخر آن را حذف کنید ،
برابر با همین برچسب زمان یونیکس خواهد شد.
برای گرفتن عدد برچسب زمانی همین حالا ، می توانید از تابع time استفاده کنید.
<?php echo time(); ?>
تابع = Function
توابع موجود در این نرم افزار ، در جدول مربوطه ، فهرست شده اند.
توابع ، اطلاعاتی را از ما می گیرند و
طبق تنظیمات ما ، تغییراتی را بر روی آن اطلاعات انجام داده و در خروجی شان به ما پس می دهند. مثلاً تابع gregorian_to_jalali ، شماره ی سال و ماه و روز
میلادی را از ما گرفته و در خروجی خود ، شماره ی سال و ماه و روز هجری شمسی را به ما پس می دهد.
پارامتر = Parameter
پارامتر های هر تابع ، در جدول مربوط به آن ، فهرست شده اند. مثلاً در تابع jdate به صورت زیر است.
jdate('پارامتر پنجم','پارامتر چهارم','پارامتر سوم','
پارامتر دوم','پارامتر اوّل');
پارامترهای اجباری ، پارامترهایی اند که حتماً باید مقداری برایشان وارد شود ، وگرنه تابع دچار مشکل می شود و
خروجی ندارد.
پارامترهای اختیاری ، پارامترهایی هستند که می توانید آن ها را وارد نکنید. در صورتی که این پارامترها را وارد نکنید یا خالی ''
بگذارید
(در این نرم افزار) ، مقدار پیشفرض برای آن پارامتر ، وارد می شود. برای مثال ، در تابع jdate ، مقدار پیشفرض یکی از پارامترها ، 'Asia/Tehran' است. یعنی اگر آن
پارامتر را وارد نکنید یا خالی ''
بگذارید ، وقت تهران به عنوان پیشفرض وارد می شود.
کاراکتر = character
همان حرف ، عبارت و یا عددی است که در جای پارامترها قرار می دهیم. کاراکترهایی که هر پارامتر از هر تابع می تواند بگیرد ، در توضیحات و جداول مربوطه ، فهرست
شده اند.
هر پارامتر یک تابع ، مقادیر خاصی می تواند بگیرد که این مقادیر ، همان کاراکترها هستند. مثلاً پارامتر فلان تابع فلان ، دو کاراکتر 1 و 0 دارد.
اگر 1 وارد شود ، فلان تغییر را در خروجی اعمال می کند و اگر 0 وارد شود ، اعمال نمی کند. یا همین تابع jdate که پارامتر اوّل آن ، کاراکترهای زیادی می تواند بگیرد.
مثلاً کاراکتر Y بزرگ برای نمایش شماره ی سال کامل و کاراکتر y کوچک برای سال دورقمی یا s برای نمایش ثانیه است.
کاراکتری که در هر پارامتر وارد می
کنیم ، تعیین می کند که چه اطلاعاتی از تابع خارج شود و چه تغییراتی بر روی خروجی انجام شود.
استفاده ی ساده
اوّلین قدم برای استفاده از این نرم افزار ، افزودن فایل jdf.php در جایی است که قصد استفاده از آن را دارید.
برای این کار ، فقط کافیست از دستور include یا
include_once استفاده کرده و فایل نرم افزار را اضافه نمایید. حال ، تمامی توابع فایل را در دسترس خواهید داشت و می توانید از آن ها استفاده کنید.
در ابتدا
برای درک بهتر مطالب ، یک فایل php آزمایشی ایجاد می کنیم ، تا طرز کار با نرم افزار را به خوبی متوجّه شوید. سپس می توانید از آن در فایل های پیچیده تری
استفاده کنید.
حالا یک نرم افزار ویرایشگر php را بگشایید. می توانید از نوت پد ویندوز هم استفاده کنید. فقط کافیست از منوی Start به Run رفته و بنویسید: notepad و ok
کنید ، تا نوت پد باز شود. سپس کد زیر را در آن بنویسید . چون این صفحه کامل نیست ، سطر اوّل را اضافه کردیم که ربطی php ندارد و آن را را برای نمایش
صحیح متون فارسی نوشتیم ، در صفحات کامل html ، موجود است. این سطر را از فایل آزمایشی حذف نکنید.
تمامی کدها و دستورات php که از این به بعد
آزمایش می کنیم را در محل مشخّص شده ، به جای عبارت قرمز رنگ ، قرار دهید.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?
php
include_once('jdf.php');//:افزودن فایل نرم افزار
/* کدهای آزمایشی را در این جا قرار دهید */
echo $out;//:برای نمایش
خروجی
?>
و از منوی File بالای نوت پد ، ...Save As را باز کنید. در صفحه ی ذخیره ، مثلاً نام zaman.php را نوشته و نوع فایل را All Files و Encoding آن را UTF-8 ، انتخاب نمایید. سپس فایل را در مکان دلخواهی ذخیره کنید.
فایل jdf.php را در کنار فایل آزمایشی قرار دهید. ( یا در هر مکانی که در includ_once مشخّص می کنید.)
به عنوان اوّلین آزمایش ، متغیّر out$ را اینگونه
قرار می دهیم:
$out=jdate('F');//خروجی:// بهمن
عبارتی که نمایش داده خواهد شد ، نام ماه به حروف است. مثلاً: بهمن یا هر ماه دیگری که اکنون در آن قرار داریم. حرف F بزرگ تعیین کرد که خروجی تابع
jdate ، نام ماه به حروف باشد. درواقع حرف F بزرگ یکی از کاراکترهای پارامتر اوّل تابع jdate است. این پارامتر ، کاراکترهای دیگری نیز می تواند بگیرد. مثلاً: f
کوچک برای نمایش فصل و خیلی از حروف دیگر که هر کدام ، کاربردی متفاوت دارد. امّا چگونه این کاراکترها (حروف) را بیابیم؟ تمامی کاراکترهای پارامتر اوّل تابع
jdate را به همراه کاربردشان ، در یک جدول که در همین جا موجود است ، به شما معرّفی خواهند شد.
برای درک بهتر ، به مثال های زیر و خروجی آن ها که
به رنگ قرمز مشخّص شده ، توجّه فرمایید. فقط این نکات را به یاد داشته باشید که: 1- بزرگی و کوچکی حروف ، اهمّیّت دارد و می تواند نتیجه را تغییر دهد. 2-
خروجی هایی که در اینجاست ، فقط مثال زده شده و در زمان شما ، به وقت خودتان نمایش داده خواهند شد.
/*نکته: اهمّیّت حروف بزرگ و کوچک در دستورات*/
$out=jdate
('V');//خروجی:هزار و سیصد و هشتاد و نه
$out=jdate('v');//خروجی:هشتاد و نه
$out=jdaTe('V');//پیغام خطا ، چون نام تابع ، به
حروف کوچک نیست
/*گرفتن خروجی های مرکّب*/
$out=jdate('H');//خروجی ساعت//10
$out=jdate('i');//خروجی
دقیقه//15
$out=jdate('s');//خروجی ثانیه//26
$out=jdate
('H:i:s');//10:15:26//خروجی مرکّب <<<
$out=jdate
('Y');//خروجی سال به عدد//1389
$out=jdate('F');//
خروجی ماه به عدد//11
$out=jdate('j');//خروجی روز به عدد//22
$out=jdate('Y / F / j');// 1389 / 11 / 22 //خروجی مرکّب <<<
/* \ خارج کردن بعضی
کاراکترها (حروف) به صورت خام و تبدیل نشده با کاراکتر*/
/* منظور از کاراکتر ، تمامی حروف بزرگ و کوچک انگلیسی است که در جدول مربوطه نیز فهرست شده اند */
$out=jdate('i');//خروجی
دقیقه//15
$out=jdate('\i');// i //خروجی خام
$out=jdate('i - \i');// 15 - i //خروجی مرکّب دقیقه و خام
$out=jdate('H:i:s _ \i\r\a\n');// 10:15:26 _ iran //:
خروجی
اکنون که تا حدودی با این نرم افزار آشنا شده اید ، آموزش های عمومی و جدول های راهنما را مطالعه نموده و با پارامترها و توابع دیگر نیز ، آشنا شوید. کاربرد این توابع ، فقط برای نمایش خروجی ها در صفحات وب نیست ، بلکه استفاده های بسیار متنوّعی دارند. مثلاً می توانید زمان ثبت مطالب سایت یا نظرات بازدیدکنندگان را به تاریخ هجری شمسی و به وقت تهران ، ذخیره کنید. اگر آموزش ها را کاملاً مطالعه نموده و بر این نرم افزار مسلّط شوید ، قادر خواهید بود ابتکارات جدیدی به خرج داده و سرویس های بسیار مفیدی را ابداع کنید. فراموش نکنید که همه از صفر شروع کرده اند ، شما هم می توانید.
^ متن نرم افزار
<?php /* In the name of Allah = بسم اللّه الرّحمن الرّحیم */
/**
* @فارسی : توابع زمان و تاریخ هجری شمسی (جلالی) در پی اچ پی
* @name: Hijri_Shamsi,Solar(Jalali) Date and Time Functions
* @Author : Reza Gholampanahi & WebSite : http://jdf.scr.ir
* @License: GNU/LGPL _ Open Source & Free : [all functions]
* @Version: 2.75 =>[ 1399/03/18 = 1441/10/15 = 2020/06/07 ]
*/
/* F */
function jdate($format, $timestamp = '', $none = '', $time_zone = 'Asia/Tehran', $tr_num = 'fa') {
$T_sec = 0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
if ($time_zone != 'local') date_default_timezone_set(($time_zone === '') ? 'Asia/Tehran' : $time_zone);
$ts = $T_sec + (($timestamp === '') ? time() : tr_num($timestamp));
$date = explode('_', date('H_i_j_n_O_P_s_w_Y', $ts));
list($j_y, $j_m, $j_d) = gregorian_to_jalali($date[8], $date[3], $date[2]);
$doy = ($j_m < 7) ? (($j_m - 1) * 31) + $j_d - 1 : (($j_m - 7) * 30) + $j_d + 185;
$kab = (((($j_y + 12) % 33) % 4) == 1) ? 1 : 0;
$sl = strlen($format);
$out = '';
for ($i = 0; $i < $sl; $i++) {
$sub = substr($format, $i, 1);
if ($sub == '\\') {
$out .= substr($format, ++$i, 1);
continue;
}
switch ($sub) {
case 'E':
case 'R':
case 'x':
case 'X':
$out .= 'http://jdf.scr.ir';
break;
case 'B':
case 'e':
case 'g':
case 'G':
case 'h':
case 'I':
case 'T':
case 'u':
case 'Z':
$out .= date($sub, $ts);
break;
case 'a':
$out .= ($date[0] < 12) ? 'ق.ظ' : 'ب.ظ';
break;
case 'A':
$out .= ($date[0] < 12) ? 'قبل از ظهر' : 'بعد از ظهر';
break;
case 'b':
$out .= (int) ($j_m / 3.1) + 1;
break;
case 'c':
$out .= $j_y . '/' . $j_m . '/' . $j_d . ' ،' . $date[0] . ':' . $date[1] . ':' . $date[6] . ' ' . $date[5];
break;
case 'C':
$out .= (int) (($j_y + 99) / 100);
break;
case 'd':
$out .= ($j_d < 10) ? '0' . $j_d : $j_d;
break;
case 'D':
$out .= jdate_words(array('kh' => $date[7]), ' ');
break;
case 'f':
$out .= jdate_words(array('ff' => $j_m), ' ');
break;
case 'F':
$out .= jdate_words(array('mm' => $j_m), ' ');
break;
case 'H':
$out .= $date[0];
break;
case 'i':
$out .= $date[1];
break;
case 'j':
$out .= $j_d;
break;
case 'J':
$out .= jdate_words(array('rr' => $j_d), ' ');
break;
case 'k';
$out .= tr_num(100 - (int) ($doy / ($kab + 365.24) * 1000) / 10, $tr_num);
break;
case 'K':
$out .= tr_num((int) ($doy / ($kab + 365.24) * 1000) / 10, $tr_num);
break;
case 'l':
$out .= jdate_words(array('rh' => $date[7]), ' ');
break;
case 'L':
$out .= $kab;
break;
case 'm':
$out .= ($j_m > 9) ? $j_m : '0' . $j_m;
break;
case 'M':
$out .= jdate_words(array('km' => $j_m), ' ');
break;
case 'n':
$out .= $j_m;
break;
case 'N':
$out .= $date[7] + 1;
break;
case 'o':
$jdw = ($date[7] == 6) ? 0 : $date[7] + 1;
$dny = 364 + $kab - $doy;
$out .= ($jdw > ($doy + 3) and $doy < 3) ? $j_y - 1 : (((3 - $dny) > $jdw and $dny < 3) ? $j_y + 1 : $j_y);
break;
case 'O':
$out .= $date[4];
break;
case 'p':
$out .= jdate_words(array('mb' => $j_m), ' ');
break;
case 'P':
$out .= $date[5];
break;
case 'q':
$out .= jdate_words(array('sh' => $j_y), ' ');
break;
case 'Q':
$out .= $kab + 364 - $doy;
break;
case 'r':
$key = jdate_words(array('rh' => $date[7], 'mm' => $j_m));
$out .= $date[0] . ':' . $date[1] . ':' . $date[6] . ' ' . $date[4] . ' ' . $key['rh'] . '، ' . $j_d . ' ' . $key['mm'] . ' ' . $j_y;
break;
case 's':
$out .= $date[6];
break;
case 'S':
$out .= 'ام';
break;
case 't':
$out .= ($j_m != 12) ? (31 - (int) ($j_m / 6.5)) : ($kab + 29);
break;
case 'U':
$out .= $ts;
break;
case 'v':
$out .= jdate_words(array('ss' => ($j_y % 100)), ' ');
break;
case 'V':
$out .= jdate_words(array('ss' => $j_y), ' ');
break;
case 'w':
$out .= ($date[7] == 6) ? 0 : $date[7] + 1;
break;
case 'W':
$avs = (($date[7] == 6) ? 0 : $date[7] + 1) - ($doy % 7);
if ($avs < 0) $avs += 7;
$num = (int) (($doy + $avs) / 7);
if ($avs < 4) {
$num++;
} elseif ($num < 1) {
$num = ($avs == 4 or $avs == ((((($j_y % 33) % 4) - 2) == ((int) (($j_y % 33) * 0.05))) ? 5 : 4)) ? 53 : 52;
}
$aks = $avs + $kab;
if ($aks == 7) $aks = 0;
$out .= (($kab + 363 - $doy) < $aks and $aks < 3) ? '01' : (($num < 10) ? '0' . $num : $num);
break;
case 'y':
$out .= substr($j_y, 2, 2);
break;
case 'Y':
$out .= $j_y;
break;
case 'z':
$out .= $doy;
break;
default:
$out .= $sub;
}
}
return ($tr_num != 'en') ? tr_num($out, 'fa', '.') : $out;
}
/* F */
function jstrftime($format, $timestamp = '', $none = '', $time_zone = 'Asia/Tehran', $tr_num = 'fa') {
$T_sec = 0;/* <= رفع خطاي زمان سرور ، با اعداد '+' و '-' بر حسب ثانيه */
if ($time_zone != 'local') date_default_timezone_set(($time_zone === '') ? 'Asia/Tehran' : $time_zone);
$ts = $T_sec + (($timestamp === '') ? time() : tr_num($timestamp));
$date = explode('_', date('h_H_i_j_n_s_w_Y', $ts));
list($j_y, $j_m, $j_d) = gregorian_to_jalali($date[7], $date[4], $date[3]);
$doy = ($j_m < 7) ? (($j_m - 1) * 31) + $j_d - 1 : (($j_m - 7) * 30) + $j_d + 185;
$kab = (((($j_y + 12) % 33) % 4) == 1) ? 1 : 0;
$sl = strlen($format);
$out = '';
for ($i = 0; $i < $sl; $i++) {
$sub = substr($format, $i, 1);
if ($sub == '%') {
$sub = substr($format, ++$i, 1);
} else {
$out .= $sub;
continue;
}
switch ($sub) {
/* Day */
case 'a':
$out .= jdate_words(array('kh' => $date[6]), ' ');
break;
case 'A':
$out .= jdate_words(array('rh' => $date[6]), ' ');
break;
case 'd':
$out .= ($j_d < 10) ? '0' . $j_d : $j_d;
break;
case 'e':
$out .= ($j_d < 10) ? ' ' . $j_d : $j_d;
break;
case 'j':
$out .= str_pad($doy + 1, 3, 0, STR_PAD_LEFT);
break;
case 'u':
$out .= $date[6] + 1;
break;
case 'w':
$out .= ($date[6] == 6) ? 0 : $date[6] + 1;
break;
/* Week */
case 'U':
$avs = (($date[6] < 5) ? $date[6] + 2 : $date[6] - 5) - ($doy % 7);
if ($avs < 0) $avs += 7;
$num = (int) (($doy + $avs) / 7) + 1;
if ($avs > 3 or $avs == 1) $num--;
$out .= ($num < 10) ? '0' . $num : $num;
break;
case 'V':
$avs = (($date[6] == 6) ? 0 : $date[6] + 1) - ($doy % 7);
if ($avs < 0) $avs += 7;
$num = (int) (($doy + $avs) / 7);
if ($avs < 4) {
$num++;
} elseif ($num < 1) {
$num = ($avs == 4 or $avs == ((((($j_y % 33) % 4) - 2) == ((int) (($j_y % 33) * 0.05))) ? 5 : 4)) ? 53 : 52;
}
$aks = $avs + $kab;
if ($aks == 7) $aks = 0;
$out .= (($kab + 363 - $doy) < $aks and $aks < 3) ? '01' : (($num < 10) ? '0' . $num : $num);
break;
case 'W':
$avs = (($date[6] == 6) ? 0 : $date[6] + 1) - ($doy % 7);
if ($avs < 0) $avs += 7;
$num = (int) (($doy + $avs) / 7) + 1;
if ($avs > 3) $num--;
$out .= ($num < 10) ? '0' . $num : $num;
break;
/* Month */
case 'b':
case 'h':
$out .= jdate_words(array('km' => $j_m), ' ');
break;
case 'B':
$out .= jdate_words(array('mm' => $j_m), ' ');
break;
case 'm':
$out .= ($j_m > 9) ? $j_m : '0' . $j_m;
break;
/* Year */
case 'C':
$tmp = (int) ($j_y / 100);
$out .= ($tmp > 9) ? $tmp : '0' . $tmp;
break;
case 'g':
$jdw = ($date[6] == 6) ? 0 : $date[6] + 1;
$dny = 364 + $kab - $doy;
$out .= substr(($jdw > ($doy + 3) and $doy < 3) ? $j_y - 1 : (((3 - $dny) > $jdw and $dny < 3) ? $j_y + 1 : $j_y), 2, 2);
break;
case 'G':
$jdw = ($date[6] == 6) ? 0 : $date[6] + 1;
$dny = 364 + $kab - $doy;
$out .= ($jdw > ($doy + 3) and $doy < 3) ? $j_y - 1 : (((3 - $dny) > $jdw and $dny < 3) ? $j_y + 1 : $j_y);
break;
case 'y':
$out .= substr($j_y, 2, 2);
break;
case 'Y':
$out .= $j_y;
break;
/* Time */
case 'H':
$out .= $date[1];
break;
case 'I':
$out .= $date[0];
break;
case 'l':
$out .= ($date[0] > 9) ? $date[0] : ' ' . (int) $date[0];
break;
case 'M':
$out .= $date[2];
break;
case 'p':
$out .= ($date[1] < 12) ? 'قبل از ظهر' : 'بعد از ظهر';
break;
case 'P':
$out .= ($date[1] < 12) ? 'ق.ظ' : 'ب.ظ';
break;
case 'r':
$out .= $date[0] . ':' . $date[2] . ':' . $date[5] . ' ' . (($date[1] < 12) ? 'قبل از ظهر' : 'بعد از ظهر');
break;
case 'R':
$out .= $date[1] . ':' . $date[2];
break;
case 'S':
$out .= $date[5];
break;
case 'T':
$out .= $date[1] . ':' . $date[2] . ':' . $date[5];
break;
case 'X':
$out .= $date[0] . ':' . $date[2] . ':' . $date[5];
break;
case 'z':
$out .= date('O', $ts);
break;
case 'Z':
$out .= date('T', $ts);
break;
/* Time and Date Stamps */
case 'c':
$key = jdate_words(array('rh' => $date[6], 'mm' => $j_m));
$out .= $date[1] . ':' . $date[2] . ':' . $date[5] . ' ' . date('P', $ts) . ' ' . $key['rh'] . '، ' . $j_d . ' ' . $key['mm'] . ' ' . $j_y;
break;
case 'D':
$out .= substr($j_y, 2, 2) . '/' . (($j_m > 9) ? $j_m : '0' . $j_m) . '/' . (($j_d < 10) ? '0' . $j_d : $j_d);
break;
case 'F':
$out .= $j_y . '-' . (($j_m > 9) ? $j_m : '0' . $j_m) . '-' . (($j_d < 10) ? '0' . $j_d : $j_d);
break;
case 's':
$out .= $ts;
break;
case 'x':
$out .= substr($j_y, 2, 2) . '/' . (($j_m > 9) ? $j_m : '0' . $j_m) . '/' . (($j_d < 10) ? '0' . $j_d : $j_d);
break;
/* Miscellaneous */
case 'n':
$out .= "\n";
break;
case 't':
$out .= "\t";
break;
case '%':
$out .= '%';
break;
default:
$out .= $sub;
}
}
return ($tr_num != 'en') ? tr_num($out, 'fa', '.') : $out;
}
/* F */
function jmktime($h = '', $m = '', $s = '', $jm = '', $jd = '', $jy = '', $none = '', $timezone = 'Asia/Tehran') {
if ($timezone != 'local') date_default_timezone_set($timezone);
if ($h === '') {
return time();
} else {
list($h, $m, $s, $jm, $jd, $jy) = explode('_', tr_num($h . '_' . $m . '_' . $s . '_' . $jm . '_' . $jd . '_' . $jy));
if ($m === '') {
return mktime($h);
} else {
if ($s === '') {
return mktime($h, $m);
} else {
if ($jm === '') {
return mktime($h, $m, $s);
} else {
$jdate = explode('_', jdate('Y_j', '', '', $timezone, 'en'));
if ($jd === '') {
list($gy, $gm, $gd) = jalali_to_gregorian($jdate[0], $jm, $jdate[1]);
return mktime($h, $m, $s, $gm);
} else {
if ($jy === '') {
list($gy, $gm, $gd) = jalali_to_gregorian($jdate[0], $jm, $jd);
return mktime($h, $m, $s, $gm, $gd);
} else {
list($gy, $gm, $gd) = jalali_to_gregorian($jy, $jm, $jd);
return mktime($h, $m, $s, $gm, $gd, $gy);
}
}
}
}
}
}
}
/* F */
function jgetdate($timestamp = '', $none = '', $timezone = 'Asia/Tehran', $tn = 'en') {
$ts = ($timestamp === '') ? time() : tr_num($timestamp);
$jdate = explode('_', jdate('F_G_i_j_l_n_s_w_Y_z', $ts, '', $timezone, $tn));
return array(
'seconds' => tr_num((int) tr_num($jdate[6]), $tn),
'minutes' => tr_num((int) tr_num($jdate[2]), $tn),
'hours' => $jdate[1],
'mday' => $jdate[3],
'wday' => $jdate[7],
'mon' => $jdate[5],
'year' => $jdate[8],
'yday' => $jdate[9],
'weekday' => $jdate[4],
'month' => $jdate[0],
0 => tr_num($ts, $tn)
);
}
/* F */
function jcheckdate($jm, $jd, $jy) {
list($jm, $jd, $jy) = explode('_', tr_num($jm . '_' . $jd . '_' . $jy));
$l_d = ($jm == 12 and ((($jy + 12) % 33) % 4) != 1) ? 29 : (31 - (int) ($jm / 6.5));
return ($jm > 12 or $jd > $l_d or $jm < 1 or $jd < 1 or $jy < 1) ? false : true;
}
/* F */
function tr_num($str, $mod = 'en', $mf = '٫') {
$num_a = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.');
$key_a = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹', $mf);
return ($mod == 'fa') ? str_replace($num_a, $key_a, $str) : str_replace($key_a, $num_a, $str);
}
/* F */
function jdate_words($array, $mod = '') {
foreach ($array as $type => $num) {
$num = (int) tr_num($num);
switch ($type) {
case 'ss':
$sl = strlen($num);
$xy3 = substr($num, 2 - $sl, 1);
$h3 = $h34 = $h4 = '';
if ($xy3 == 1) {
$p34 = '';
$k34 = array('ده', 'یازده', 'دوازده', 'سیزده', 'چهارده', 'پانزده', 'شانزده', 'هفده', 'هجده', 'نوزده');
$h34 = $k34[substr($num, 2 - $sl, 2) - 10];
} else {
$xy4 = substr($num, 3 - $sl, 1);
$p34 = ($xy3 == 0 or $xy4 == 0) ? '' : ' و ';
$k3 = array('', '', 'بیست', 'سی', 'چهل', 'پنجاه', 'شصت', 'هفتاد', 'هشتاد', 'نود');
$h3 = $k3[$xy3];
$k4 = array('', 'یک', 'دو', 'سه', 'چهار', 'پنج', 'شش', 'هفت', 'هشت', 'نه');
$h4 = $k4[$xy4];
}
$array[$type] = (($num > 99) ? str_replace(
array('12', '13', '14', '19', '20'),
array('هزار و دویست', 'هزار و سیصد', 'هزار و چهارصد', 'هزار و نهصد', 'دوهزار'),
substr($num, 0, 2)
) . ((substr($num, 2, 2) == '00') ? '' : ' و ') : '') . $h3 . $p34 . $h34 . $h4;
break;
case 'mm':
$key = array('فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند');
$array[$type] = $key[$num - 1];
break;
case 'rr':
$key = array(
'یک', 'دو', 'سه', 'چهار', 'پنج', 'شش', 'هفت', 'هشت', 'نه', 'ده', 'یازده', 'دوازده', 'سیزده', 'چهارده', 'پانزده', 'شانزده', 'هفده', 'هجده', 'نوزده', 'بیست', 'بیست و یک', 'بیست و دو', 'بیست و سه', 'بیست و چهار', 'بیست و پنج', 'بیست و شش', 'بیست و هفت', 'بیست و هشت', 'بیست و نه', 'سی', 'سی و یک'
);
$array[$type] = $key[$num - 1];
break;
case 'rh':
$key = array('یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه');
$array[$type] = $key[$num];
break;
case 'sh':
$key = array('مار', 'اسب', 'گوسفند', 'میمون', 'مرغ', 'سگ', 'خوک', 'موش', 'گاو', 'پلنگ', 'خرگوش', 'نهنگ');
$array[$type] = $key[$num % 12];
break;
case 'mb':
$key = array('حمل', 'ثور', 'جوزا', 'سرطان', 'اسد', 'سنبله', 'میزان', 'عقرب', 'قوس', 'جدی', 'دلو', 'حوت');
$array[$type] = $key[$num - 1];
break;
case 'ff':
$key = array('بهار', 'تابستان', 'پاییز', 'زمستان');
$array[$type] = $key[(int) ($num / 3.1)];
break;
case 'km':
$key = array('فر', 'ار', 'خر', 'تی', 'مر', 'شه', 'مه', 'آب', 'آذ', 'دی', 'به', 'اس');
$array[$type] = $key[$num - 1];
break;
case 'kh':
$key = array('ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش');
$array[$type] = $key[$num];
break;
default:
$array[$type] = $num;
}
}
return ($mod === '') ? $array : implode($mod, $array);
}
/** Gregorian & Jalali (Hijri_Shamsi,Solar) Date Converter Functions
Author: JDF.SCR.IR =>> Download Full Version : http://jdf.scr.ir/jdf
License: GNU/LGPL _ Open Source & Free :: Version: 2.80 : [2020=1399]
---------------------------------------------------------------------
355746=361590-5844 & 361590=(30*33*365)+(30*8) & 5844=(16*365)+(16/4)
355666=355746-79-1 & 355668=355746-79+1 & 1595=605+990 & 605=621-16
990=30*33 & 12053=(365*33)+(32/4) & 36524=(365*100)+(100/4)-(100/100)
1461=(365*4)+(4/4) & 146097=(365*400)+(400/4)-(400/100)+(400/400) */
/* F */
function gregorian_to_jalali($gy, $gm, $gd, $mod = '') {
list($gy, $gm, $gd) = explode('_', tr_num($gy . '_' . $gm . '_' . $gd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
$g_d_m = array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334);
$gy2 = ($gm > 2) ? ($gy + 1) : $gy;
$days = 355666 + (365 * $gy) + ((int) (($gy2 + 3) / 4)) - ((int) (($gy2 + 99) / 100)) + ((int) (($gy2 + 399) / 400)) + $gd + $g_d_m[$gm - 1];
$jy = -1595 + (33 * ((int) ($days / 12053)));
$days %= 12053;
$jy += 4 * ((int) ($days / 1461));
$days %= 1461;
if ($days > 365) {
$jy += (int) (($days - 1) / 365);
$days = ($days - 1) % 365;
}
if ($days < 186) {
$jm = 1 + (int) ($days / 31);
$jd = 1 + ($days % 31);
} else {
$jm = 7 + (int) (($days - 186) / 30);
$jd = 1 + (($days - 186) % 30);
}
return ($mod == '') ? array($jy, $jm, $jd) : $jy . $mod . $jm . $mod . $jd;
}
/* F */
function jalali_to_gregorian($jy, $jm, $jd, $mod = '') {
list($jy, $jm, $jd) = explode('_', tr_num($jy . '_' . $jm . '_' . $jd));/* <= Extra :اين سطر ، جزء تابع اصلي نيست */
$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;
}
Copyright(C)2020 | 1399, jdf.scr.ir