آموزش پیشرفته PHP – تاریخ و زمان(میلادی و شمسی)
سلام
با یک قسمت دیگه از آموزش پیشرفته PHP در خدمتتون هستیم، در این آموزش می خواهیم به یک مبحث فوق العاده کاربردی به اسم تاریخ و زمان بپردازیم، و در ابتدا یاد میگیریم که چگونه تاریخ و زمان را نمایش دهیم و همچنین چگونه میتوانیم از تاریخ شمسی استفاده کنیم؛ در ادامه همراه بپرسم باشید.
این تابع، رشته ای از داده ها را به عنوان پارمتر می گیرد و نتایج آنها را به صورت زمان یا تاریخ نمایش می دهد.
در حقیقت با استفاده از این تابع می توان تاریخ یا زمان را در شکل های مختلف نشان داد.
تابع date در PHP
در php برای نمایش تاریخ از تابع date استفاده میکنیم. که این تابع پارامترهای مختلفی دارد که به صورت رشته مشخص میشود و در نتیجه آتها را به صورت تاریخ یا زمان نشان میدهد.
نحوه استفاده:
تابع date دو پارامتر به عنوان ورودی میگیرد:
۱ |
date(format,timestamp) |
دریافت تاریخ با استفاده از تابع date
در تابع date پارامتر format الزامی است که قالب نمایش تاریخ یا زمان را مشخص میکند.
بعضی از کاراکترهایی که می توان به عنوان پارامتر الزامی، در تابع date استفاده کرد:
- a: صبح یا عصر، نماینده am و pm است.
- A: صبح یا عصر، نماینده AM و PM است.
- B: زمان اینترنت سوئچ (swatch) که یک زمان جهانی است.
- C: تاریخ ISO 8601، تاریخ به صورت YYYY_MM_DD . این کد فرمت در نسخه php 5 ارائه شده است.
- d: روز به صورت عدد دو رقمی از ۰۱ تا ۳۱
- D: روز هفته به صورت ۳ کاراکتر مانند :Mon و Sun
- F: ماه در فرمت متنی . محدوده آن از January تا December است.
- g: ساعت در فرمت ۱۲ ساعت از ۱ تا ۱۲
- G: ساعت در فرمت ۲۴ ساعت از ۰ تا ۲۳
- h: ساعت در فرمت ۱۲ ساعت از ۰۱ تا ۱۲
- H: ساعت در فرمت ۲۴ ساعت از ۰۰ تا ۲۳
- i: دقیقه به صورت عدد دو رقمی از ۰۰ تا ۵۹
- I: این مقدار بولی ساعت را یک ساعت به جلو و عقب می برد (در آخر تابستان و اول فروردین)
- j: روز را در یک ماه نشان می دهد. از ۱ تا ۳۱
- l: روز را در هفته از Sonday تا Monday مشخص می کند.
- L: این مقدار بولی سال کبیسه را مشخص می کند و اگر سال کبیسه باشد مقدار یک را بر می گرداند.
- m: ماه را در فرمت دو رقمی از ۰۱ تا ۱۲ مشخص می کند.
- M: ماه در فرمت ۳ کاراکتر مانند: Jan و Dec
- n: ماه در فرمت عددی بدون صفر از ۱ تا ۱۲
- o: تفاوت زمان منطقه جغرافیایی موجود و GMT را در واحد ساعت بیان می کند.
- r: زمان و تاریخ در فرمت RFC822
- s: ثانیه در محدوده ۰۰ تا ۵۹
- S: پسوند های ترتیبی اعداد در فرمت دو کاراکتر .مانند: ۱st یا ۲۳th
- t: تعداد روز های ماه را از ۲۸ تا ۳۱ مشخص می کند.
- T: تنظیمات منطقه زمانی سرور در فرمت ۳ کاراکتر مانند EST
- U: تعداد کل ثانیه ها از اول ژانویه ۱۹۷۰ تاکنون را بیان می کند.
- w: روز هفته در یک رقم. ۰ برای یکشنبه و ۶ برای شنبه
- W: شماره هفته از اول سال. مانند ۲۱ برای نشان دادن هفته ۲۱ام سال
- y: سال در فرمت دورقمی، ۰۵ برای ۲۰۰۵
- Y: سال در فرمت چهار رقمی، مانند ۲۰۰۶
- z: روز را مشخص می کند. محدوده آن ۰ تا ۳۶۵ است.
- Z: افست منطقه زمانی را بر حسب ثانیه بیان می کند. محدوده آن بین ۴۳۲۰۰- و ۴۳۲۰۰ است.
نکته: کاراکتر هایی که در لیست بالا نباشند، مستقیماً چاپ می شوند. مانند: / و , و … .
همینطور که مشاهده میکنید؛ رشته های بالا را می توانیم به عنوان پارامتر format استفاده کنیم؛ در ادامه چندین مثال نیز حل میکنیم.
مثال:
۱ ۲ ۳ ۴ ۵ ۶ |
<?php echo "Today is " . date("Y/m/d") . "<br>"; echo "Today is " . date("Y.m.d") . "<br>"; echo "Today is " . date("Y-m-d") . "<br>"; echo "Today is " . date("l"); ?> |
خروجی مثال بالا:
Today is 2019/10/08
Today is 2019.10.08
Today is 2019-10-08
Today is Tuesday
کار با تابع date بسیار ساده است، شما به هر شکلی که بخواهید میتوانید تاریخ را نمایش دهید؛ پارامتر هایی که در بالا گفتیم را خودتان امتحان کنید تا خروجی های مختلفی بگیرید.
دریافت زمان با استفاده از تابع date
در بالا تمام پارامترهای format را ذکر کردیم؛ که چند تا از این پارامتر ها برای دریافت زمان است، پارامترهایی مثل:
- a: صبح یا عصر، نماینده am و pm است.
- A: صبح یا عصر، نماینده AM و PM است.
- B: زمان اینترنت سوئچ (swatch) که یک زمان جهانی است.
- g: ساعت در فرمت ۱۲ ساعت از ۱ تا ۱۲
- G: ساعت در فرمت ۲۴ ساعت از ۰ تا ۲۳
- h: ساعت در فرمت ۱۲ ساعت از ۰۱ تا ۱۲
- H: ساعت در فرمت ۲۴ ساعت از ۰۰ تا ۲۳
- i: دقیقه به صورت عدد دو رقمی از ۰۰ تا ۵۹
- I: این مقدار بولی ساعت را یک ساعت به جلو و عقب می برد (در آخر تابستان و اول فروردین)
- s: ثانیه در محدوده ۰۰ تا ۵۹
مثال:
۱ ۲ ۳ |
<?php echo "The time is " . date("h:i:sa"); ?> |
خروجی مثال بالا:
The time is 08:47:55am
که زمان فعلی را نمایش میدهد.
نمایش سال جاری با نماد کپی رایت
در فوتر وب سایت ها حتما دیدید که متنی را به عنوان کپی رایت گذاشتند و تاریخ را نمایش میدهند، برای انجام چنین کاری میتوانید از قطعه کد زیر استفاده کنید:
۱ |
© ۱۳۹۵-<?php echo date("Y");?> |
تنظیم منطقه زمانی با تابع date_default_timezone_set
زمانی که از تابع date استفاده میکنیم، زمان را بر اساس منطقه ی زمانی نشان میدهد، به این معنی که اگر از سرور ایران استفاده کنیم، زمان ایران را نشان میدهد و اگر از سرورهای خارجی مثلا آلمان استفاده کنیم؛ آلمان را نشان میدهد، برای رفع چنین مشکلی در php تابع date_default_timezone_set را داریم که یک پارامتر ورودی میگیرد که منطقه مورد نظر را می توانیم مشخص کنیم که زمان بر اساس همین منطقه نمایش داده شود.
مثال:
۱ ۲ ۳ ۴ |
<?php date_default_timezone_set("Asia/Tehran"); echo "The time is " . date("h:i:sa"); ?> |
در قطعه کد بالا زمان بر اساس منطقه ایران تنظیم شده است.
ایجاد تاریخ با تابع mktime
پارامتر دلخواه در تابع date یک timestamp را مشخص میکند، بنابراین اگر timestamp خاصی را مشخص نکنید از timestamp زمان حال استفاده میشود.
در php توسط تابع mktime می توانیم یک timestamp مشخص کنیم تا mktime در خروجی این timestamp را به تاریخ و زمان تبدیل و نمایش دهد.
نحوه استفاده:
۱ |
mktime(hour,minute,second,month,day,year) |
مثال:
۱ ۲ ۳ ۴ |
<?php $d=mktime(۱۱, ۱۴, ۵۴, ۸, ۱۲, ۲۰۱۴); echo "Created date is " . date("Y-m-d h:i:sa", $d); ?> |
خروجی مثال بالا:
Created date is 2014-08-12 11:14:54am
ایجاد تاریخ با تابع strtotime
از تابع strtotime در PHP برای تبدیل رشته متنی قابل خواندن برای انسان به زمان Unix استفاده میشود.
نحوه استفاده:
۱
strtotime(time,now)
در strtime مانند mktime نیاز نیست که تاریخ و زمان را به صورت عددی بدیم؛ بلکه به صورت ماه و … میتوان داد.
مثال:
۱۲۳۴
<?php$d=strtotime("۱۰:۳۰pm April 15 2014");echo "Created date is " . date("Y-m-d h:i:sa", $d);?>
خروجی:
Created date is 2014-04-15 10:30:00pm
زبان PHP در مورد تبدیل یک رشته به تاریخ بسیار هوشمندانه عمل میکند، بنابراین مقادیر مختلفی می توانید بدهید، مانند:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ |
<?php $d=strtotime("tomorrow"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("+۳ Months"); echo date("Y-m-d h:i:sa", $d) . "<br>"; ?> |
مثال های بیشتری از تابع Date
در ادامه چند مثال بیشتر از تابع date می آوریم:
مثال اول: قطعه کد زیر تاریخ ۴ شنبه آینده را نشان میدهد.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
<?php $startdate = strtotime("Saturday"); $enddate = strtotime("+۶ weeks", $startdate); while ($startdate < $enddate) { echo date("M d", $startdate) . "<br>"; $startdate = strtotime("+۱ week", $startdate); } ?> |
مثال دوم: در قطعه کد زیر تعداد روز های باقی مانده تا ۴ جولای نمایش داده میشود.
۱ ۲ ۳ ۴ ۵ |
<?php $d1=strtotime("July 04"); $d2=ceil(($d1-time())/۶۰/۶۰/۲۴); echo "There are " . $d2 ." days until 4th of July."; ?> |
آموزش تاریخ شمسی در PHP
تا اینجای آموزش کار با تابع date را به صورت کامل یاد گرفتیم و فهمیدیم چگونه می توانیم تاریخ و زمان را به دست بیاریم، حال نوبت به این میرسد که از تاریخ شمسی استفاده کنیم، چون وب سایتی که طراحی میکنیم نیاز به تاریخ شمسی دارد.
برای تاریخ شمسی از کتابخانه ای به اسم jdf استفاده میکنیم، این کتابخانه توسط برنامه نویسان ایرانی نوشته شده است و کار با آن بسیار ساده است، برای دانلود کتابخانه jdf به سایت سازنده مراجعه کنید(برای ورود به سایت کلیک کنید) یا برای دانلود کتابخانه به صورت مستقیم کلیک کنید.
به سایت که مراجعه کنید مستندات کامل و توابع مختلف این کتابخانه به همراه آموزش قرار داده شده است.
تبدیل تاریخ میلادی به شمسی در php
پس از دانلود کتابخانه، فایل jdf.php را در کنار فایلهای خود قرار داده و آن را در فایلی که میخواهید از تاریخ استفاده شود را include کنید.
مثال:
۱ ۲ ۳ |
include_once 'jdf.php'; $date = jdate("Y/n/j"); echo $date; |
در مثال بالا فایل jdf.php را در کنار فایلهای پروژه قرار دادیم و آن را با دستور include به پروژه اضافه کردیم، و یک تاریخ جاری را به شمسی تبدیل کردیم.
مثال های بیشتر از تاریخ شمسی:
در ادامه مثال هایی که در بالا برای تابع date زدیم برای تابع jdate نیز می آوریم(از توضیح مجدد دیگه خود داری میکنیم)
مثال اول:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ |
<?php include_once 'jdf.php'; echo "Today is " . jdate("Y/m/d") . "<br>"; echo "Today is " . jdate("Y.m.d") . "<br>"; echo "Today is " . jdate("Y-m-d") . "<br>"; echo "Today is " . jdate("l"); ?> |
مثال دوم:
۱ ۲ ۳ ۴ ۵ |
<?php include_once 'jdf.php'; echo "The time is " . jdate("h:i:sa"); ?> |
مثال سوم:
۱ ۲ ۳ ۴ ۵ ۶ |
<?php include_once 'jdf.php'; date_default_timezone_set("Asia/Tehran"); echo "The time is " . jdate("h:i:sa"); ?> |
مثال چهارم:
۱ ۲ ۳ ۴ ۵ ۶ |
<?php include_once 'jdf.php'; $d=mktime(۱۱, ۱۴, ۵۴, ۸, ۱۲, ۲۰۱۴); echo "Created date is " . jdate("Y-m-d h:i:sa", $d); ?> |
مثال پنجم:
۱ ۲ ۳ ۴ ۵ ۶ |
<?php include_once 'jdf.php'; $d=strtotime("۱۰:۳۰pm April 15 2014"); echo "Created date is " . jdate("Y-m-d h:i:sa", $d); ?> |
مثال ششم:
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ |
<?php include_once 'jdf.php'; $d=strtotime("tomorrow"); echo jdate("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("next Saturday"); echo jdate("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("+۳ Months"); echo jdate("Y-m-d h:i:sa", $d) . "<br>"; ?> |
کار با کتابخانه jdf همانطور که گفتیم بسیار ساده است، فقط کافیست به جای date از jdate استفاده کنید
کتابخانه jdf بسیار گسترده است و توابع بسیاری دارد، پیشنهاد میکنم حتما به سایت سازنده مراجعه تا با تمام توابع آن آشنا بشید.
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید