نظرة شاملة : الوقت و التاريخ في PHP ( الجزء الأول )
يعتبر الوقت و التاريخ عاملاً هاماً في بناء أي مشروع برمجي لا بل إن هناك مشاريع قائمة بأكملها على مبدأ التاريخ و الوقت ، إن لغة البرمجة PHP تمنحك تحكماً كاملاً بعمليات الوقت و التاريخ لما تتضمنه من دوال مضمنة غايتها تسهيل التحكم و الوصول إلى عمليات الوقت و التاريخ .
سأقدم في هذه السلسلة من التدوينات و التي يجب ألا تتعدى الثلاثة شرحاً مفصلاً لكل ما يتعلق بالوقت و التاريخ ضمن لغة PHP مدعماً بالأمثلة و الملاحظات لتتمكن أخي القارئ من تطويع أي عملية تستلزم استخدام الوقت و التاريخ بشكل ميسر و بسيط .
الدالة time
تعطينا الدالة time قيمة دقيقة للوقت بصيغة رقم يعبر عن عدد الثواني من الثانية الأولى من تاريخ 1\1\1970 و حتى هذه اللحظة أو ما يسمى بـ current Unix timestamp .
time(); // 1278645812 = 8 jul 2010 7:22
الرقم الناتج من طباعة الدالة ، مثلاً : 1278645812 هو عدد الثواني منذالساعة 00 و 00 دقيقة و 00 ثانية من تاريخ 1\1\1970 و حتى الساعة 7 و 22 دقيقة و 32 ثانية من تاريخ 8\7\2010 .
تعتبر الدالة time أفضل من ناحية التخزين و الدقة و يمكن استعمالها لمعرفة الفرق بين توقيتين مثلاً و ما شابه .
في الاصدار 5.1 و ما بعد من php يمكن استبدال الدالة time بالمتغير
$_SERVER['REQUEST_TIME']
و عن طريق طباعة المتغير نحصل على القيمة ذاتها التي نحصل عليها عند طباعة الدالة time .
الدالة date
هذه الدالة أكثر تفصيلاً من دالة time حيث يمكنك تخصيص طريقة عرض الوقت عن طريق أنساق الوقت و التاريخ
date("Y"); // 2010 .. 2011 .. etc
date("M"); // Jan .. to Dec
date("j-M-Y"); // 8-Jul-2010
يمكنك عن طريق دالة date تحويل التاريخ من Unix timestamp إلى تاريخ تقوم انت بتحديده .
date("j-M-Y",1278654548); // 8-Jul-2010
date("j-M-Y h:i",1278654548); // 8-Jul-2010 09:49
نقوم بإضافة بارامتر ثاني للدالة date و هو عبارة عن الوقت بصيغة Unix timestamp و نختار التنسيق من خلال البارامتر الأول ليظهر لنا التاريخ و الوقت بالصيغة التي نحددها .
قائمة بأنساق الوقت والتاريخ التي بامكاننا استخدامها ضمن الدالة date
الدالة mktime
تقوم بتحويل التاريخ المعطى إلى صيغة Unix Timestamp حسب التاريخ المدخل و بصيغة : ساعة – دقيقة – ثانية – شهر – يوم – سنة من اليسار لليمين
أي أن البارامتر الأول هو الساعة و الثاني هو الدقائق .. حتى السنة و هي البارامتر الأخير ..
mktime(0, 0, 0, 13, 1, 1997); // 883641600 mktime(0, 0, 0, 7, 17, 2010); // 1279350000
في حال اهمال البارامترات الأخيرة أي وضع أقل من ست بارامترات ستقوم الدالة باحتساب القيم الحالية عوضاً عن القيم الفارغة أو المهملة ..
mktime(0, 0, 0, 13, 1); // 1293868800 mktime(0, 0, 0, 13); // 1295251200
في هذا المثال تم اهمال البارامتر السادس و هو السنة لذلك فإن الدالة ستقوم باحتساب السنة الحالية أي 2010 و كذلك الحال بالنسبة لباقي البارامترات
الدالة getdate
تقوم الدالة بارجاع الوقت و التاريخ على شكل مصفوفة تحتوي كل عناصر الوقت و التاريخ من الثواني – الدقائق – الساعات – اليوم – الشهر – السنة – ترتيب اليوم بالنسبة للاسبوع – ترتيب اليوم بالنسبة للسنة – اليوم كتابةً – الشهر كتابةً بالإضافة إلى عدد الثواني منذ 00:00:00 1\1\1970 و حتى التاريخ المدخل ..
$theday = getdate(1055901520); print_r($theday);
نتيجة الكود السابق هي كالتالي :
Array ( [seconds] => 40 [minutes] => 58 [hours] => 21 [mday] => 17 [wday] => 2 [mon] => 6 [year] => 2003 [yday] => 167 [weekday] => Tuesday [month] => June [0] => 1055901520 )
في حال لم نقم بإضافة بارامتر إلى الدالة فإنها تقوم باحتساب تاريخ اللحظة .. أي أنه يمكننا استعمال الدالة للحصول على مصفوفة الوقت و التاريخ دون إدخال أي بارامتر ..
$theday = getdate(1055901520); echo $theday[year]; // 2003
يمكننا الوصول إلى أي عنصر من عناصر المصفوفة لاستخدامه أو طباعته في المتصفح بسهولة .


شرح كافي ورائع :)
جيد للمبتدئين
1 أغسطس 2010pesho
شرح رائع بارك الله فيك
استفدت منك كثيرا
25 سبتمبر 2010Bo Rakkan
ما شاء الله التوضيح الوحيد الذي فهمته بشأن التاريخ Unix timestamp
6 فبراير 2011عيسى
شرح جميل جداا..
نشكرك على ما تقدمه من دروس رائعة في مجال PHP ننتضر المزيد من المواضع الرائعة
وفك الله صدقي .
27 مارس 2011Adel
ra2e3 jidan w ktir 7elo chare7 bs lmsibe 2ino ane 3am bt3alam php w 3am bbde3 fiha bs ma 3rfet kif bade ista3mel hayde lcodet btmana lw ken fi matal jehez lal iste3mel hehe w ma tw5zoune bs wala 3am dawer 3ala getdate jehze lal iste3mel :) w choukran ilkon w 3anajd ya3tikon alef 3afye w alah y2awikon:)
7 يناير 2012youzarsif
btmana plz ma tnsoune w te5do so2ale b3eyn l2itibar w tb3atle yeh 3ala 2imaile w 2akid 2into ahdafkon tfido ll3alam ane bade ista3mlo bel projet yale abdi 2admo ba3ed 2osbo3 hehe btmana plz tze3doune w nshala mntwasal deyman ma3kon:)
7 يناير 2012youzarsif