تابعdate( )درphp براي استفاده تاريخ و زمان مطابق فرمتهاي متفاوت در نظر در نظر گرفته شده است.
تابعdate() يك مهر زماني را به فرمت هاي مختلف قابل خواندن تاريخ و يا زمان تبديل مي نمايد.
فرمت كلي تابع بصورت زير است.
پارامتر هاي تابع مطابق زيراست.
1ـ پارامترformat ضروريست ومشخص كننده قالب مهرزماني تابع است.
2ـ پارامترtimestamp اختياريست وپيش فرض زمان يا تاريخ جاريست.
نكته ـtimestamp مجموعه اي ازكراكترهاي است كه نشان دهنده تاريخ يا زمان خاص مورد نظراست.
پارامترformat در تابع dtae() نشان ميدهد كه زمان يا تاريخ مورد نظر كه در timestampمشخص شده چگونه تنظيم و برگشت شود .در زير تعدادي از كراكترها كه در تنظيم نقش دارند نشان داده شده است
dـ نشان دهنده روز ماه كه بين0-31 ميباشد .
mـ نشان دهنده ماه كه بين 1-12 ميباشد .
yـ نشان دهنده سال در چهار رقم
lـ نشان دهنده روز هفته ميباشد
كراكتر هاي ديگر مثل"/",".","-" را ميتوان بين كراكتر بالا جهت تنظيم اضافه كرد . اين كراكترها در متن تاريخ نشان داده ميشود. اينها بعنوان جداكننده عناصر تاريخ ميباشند.
مثال ـ مثال زير تاريخ روز را به سه فرم مختلف نشان ميدهد .فرمت تنظيم آنها متفاوت است.
ازتابعdate() ميتوان در وبسايت ها سال حق چاپ را بصورت خودكار نشان داد . تاريخ اوليه چاپ ثابت بوده وفقط با استفاده ازتابع، سال جاري چاپ ميشود .در مثال مربوطه زير ابتدا كراكتر"© " چاپ ميشود.
<html> <body> © 2010-<?php echo date("Y");?> </body>
براي تنظيم نمايش زمان(Time) معمولا چند كراكتر هستند كه از آنها استفاده ميشود، آنها مطابق زيرند.
Hـ براي تنظيم24 ساعته يعني عدد جانشين بين 00-23
hـ براي تنظيم نمايش12 ساعته يعني بين 00-12
iـ نمايش دقيقه يعني بين 00-59
sـ نمايش ثانيه يعني بين 00-59
aـ براي نمايش صبح يا عصر
مثال ـ در مثال زير زمان جاري را مطابق فرمت تنظيمي نشان ميدهد.
<?php echo "The time is " . date("h:i:sa"); ?>
نكته ـ تابعdate() تاريخ سرور را برگشت ميدهد.
هما نطوريكه در نكته فوق مطرح گرديد، تابع زمان تنظيمي محلي سرور را بر ميگرداند .ممكن است براي كاربر نادرست باشد .در اين حالت بايد زمان در منطقه كاربرتنظيم شود.
اگر دريافت زمان ازتابعdate() نادرست است ، علت اينست كه سرور شما در يك منطقه ايست كه اختلاف زمان داريد .اطلاعات دريافتي از تاريخ در حالت عادي ،متناسب با منطقه سرور است.
بنا براين اگر نيارمند زمان درست هستيد، بايد منطقه زماني مورد نياز را تنظيم نمائيد .اين كار بااستفاده ازتابعdate_default_timezone_set() انجام ميشود،كه آرگومان آن مشخصه منطقه ميباشد.
مثال ـ در مثال زير با تابع فوق منطقه"America/New_York"براي تابعdate تنظيم شده است. همچنين ساعت ايران در دو رديف آخراستفاده شده است.منطقه ايران"Asia/Tehran"ميباشد .
<?php date_default_timezone_set("America/New_York"); echo "The time is " . date("h:i:sa"); date_default_timezone_set("Asia/Tehran"); echo"<br>". "The time of Iran is " . date("h:i:sa"); ?>
در مثالهاي فوق از تابعdate() براي زمان وتاريخ جاري استفاده شد .يعني پارامترtimestamp حالت پيش فرض خود راداشت .اما تابع ميتواند براي يك مهر زماني خاص استفاده شود .درphp تابع mktime()ميتواند يك timestamp ايجاد نمايد، كه ازآن بتوان در تابع date استفاده نمود.
فرمت كلي تابع مطابق زيراست.
مثال ـ در مثال زير تابعmktime() با مقادير پارامترهايش ، يك مهر زماني ايجاد ميكند وتابع تاريخ ازآن استفاده مي نمايد، وآنرا بفرمت تنظيمي نمايش ميدهد.
<?php $d=mktime(11, 14, 54, 8, 12, 2014); echo "Created date is " . date("Y-m-d h:i:sa", $d); ?>
تابعsrtrtotime()براي تبديل عبارت مرسوم تاريخ بيك مهر زماني Unix استفاده ميشود .فرمت كلي آن مطابق زير
مثال ـ در مثال زير با تابع فوق يك عبارت تاريخ وزمان ايجاد ميشود، وتابعdate آنرا نمايش ميدهد.
<?php $d=strtotime("10:30pm April 15 2014"); echo "Created date is " . date("Y-m-d h:i:sa", $d); ?>
تابعstrtotime() براي تبديل عبارات بسيار هوشمندانه عمل ميكند .در مثال زير عبارت متفاوتي ازقبلي است، كه نتيجه ،گوياي توانمندي تابع است.
مثال ـ تبديل عبارت"tomorrow"به مهر زماني براي تابع تاريخ
<?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("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "<br>"; ?>
مثال ـ در مثال زير تاريخ 6 تا شنبه آينده را نشان ميدهد.
<?php $startdate = strtotime("Saturday"); $enddate = strtotime("+6 weeks", $startdate); while ($startdate < $enddate) { echo date("M d", $startdate) . "<br>"; $startdate = strtotime("+1 week", $startdate); } ?>
مثال
<?php $d1=strtotime("July 04"); $d2=ceil(($d1-time())/60/60/24); echo "There are " . $d2 ." days until 4th of July."; ?>