نظرة شاملة : الوقت و التاريخ في 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

يمكننا الوصول إلى أي عنصر من عناصر المصفوفة لاستخدامه أو طباعته في المتصفح بسهولة .

6 من التعليقات على نظرة شاملة : الوقت و التاريخ في PHP ( الجزء الأول )

  • شرح كافي ورائع :)
    جيد للمبتدئين

    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

Proudly Using Wordpress
Theme Design By PlusCSS