سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط
#1  
[درس] التعامل مع الوقت والتاريخ

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته ,,

فى هذا الموضوع سنتعرف إن شاء الله على الفكرة العامة للتعامل مع الوقت والتاريخ فى PHP وبعض الدوال المستخدمة لهذا الغرض ..

فى البداية مربط الفرس فى هذا الموضوع هو ال time stamp , فلنبدأ

اولا ماهو ال time stamp ببساطة هو عدد الثوانى المنقضية من يوم 1 / 1 / 1970 وهذا يعنى انه رقم صحيح (11619599369 هذا هو عدد الثوانى وقت كتابة الموضوع )

ولكن لماذا؟ لماذا يتم تخزين التاريخ فى صورة رقم؟ لم لا يكون فى صورة نصية عادية 27-10-2006 مثلا.
الجواب لانه رقم !!! نعم كونه رقم يعطى مرونة هائلة فى التعامل , فمثلا يمكن نقله بين لغات البرمجة المختلفة وانظمة التشغيل المختلفة دون اى تخوف , وايضا هذا الرقم يتيح تحديد الوقت والتاريخ بدقة عالية لانه يحتوى على عدد ثوانى, وايضا كونه رقم هذا يعنى انه يخضع للعمليات الحسابية العادية بمعنى انه يمكننى اضافة ساعة الى التاريخ الحالى فقط بجمع 3600 او يوم بجمع 86400 وهكذا.

السؤال الان كيف يمكننا التعامل مع هذا الرقم (time stamp) فى PHP واستخلاص الوقت والتاريخ.

اولا الدالة time والتى تستخدم للحصول على ال time stamp للوقت الحالى.


كود PHP:
<?php
$now 
time();
?>

بعض حصولنا على ال time stamp هناك دالتين من خلالها يمكن تحويله الى تاريخ مقروء (27 - 10 - 2006 الساعة 8 م) مثلا

الدالة date : تستقبل معاملان الاول هو نص يحدد (يصف شكل) التاريخ المراد والثانى هو ال time stamp.

بالنسبة للمعامل الاول وهو الخاص بتشكيل التاريخ فمن خلال بعض الرموز يمكنك تحديد الصورة النهائية للتاريخ فمثلا حرف d يعنى رقم اليوم فى الشهر (27) مثلا , g يعنى الساعة (8) مثلا وهكذا , لا تقلق فبالمثال يتضح المقال


كود PHP:
<?php
$wakt 
time() + 3600// بعد ساعة من الان

/*--- لطباعة التاريخ على هذه الصورة ---*/
// 27/10/2006
echo date('d/m/Y',$wakt);

/*--- لطباعة الوقت على هذه الصورة ---*/
// 8:33 pm
echo date('h:i a',$wakt);

/*--- لطباعة الوقت والتاريخ على هذه الصورة ---*/
// 27/10/06 - 20:33
echo date('d/m/y - H:i',$wakt);
?>

كما ترى باستخدام بعض الرموز يمكنك تحديد الصورة النهائية للعرض, ايضا كما يتضح يمكن دمج بعض الكلمات او الحروف مع هذه الرموز كدمج (/) و (-) والتى تظهر كما هى فى العرض.

هذا الجدول يحتوى على قائمة بكافة الرموز المستخدمة مع هذه الدالة

الدالة الثانية هى getdate وتستقبل معامل واحد هو ال time stamp وتعيد مصفوفة associative array بها تفاصيل الوقت والتاريخ

كود PHP:
<?php
$now 
time();
$dateInfo getdate($now);
echo 
dateInfo['year']; //2006
echo dateInfo['hours']; // 8
echo dateInfo['minutes']; // 45
?>
ايضا هذا الجدول به قائمة بالعناصر المستخدمة مع المصفوفة والتى ذكرنا ثلاثة منها

معلومة جانبية: المعامل الخاص بال time stamp فى هذه الدوال اختيارى بمعنى انه يمكنك اهماله وفى هذه الحالة ستتعامل الدوال مع ال time stamp الحالى تلقائيا

ارجو ان اكون وفقت فى شرح هذا الدرس وإن شاء الله الموضوع القادم سيكون عن كيفية جعل برنامجك يتعامل مع اكثر من توقيت دولى (كما فى المنتدى بمجرد تحديد بلدك يتم ضبط تواريخ المواضيع والردود وفق لبلدك)






EL Programmer is offline   قديم 27-10-2006, 10:22 PM
الرد مع إقتباس
عضو نشيط جدا
#2  

درس موفق

بس ياليت تعرج على "strftime" وفرقها عن "date" ..

الله يوفقك لما فيه الخير للجميع






__________________
موقع رياض القرآن متخصص بالقرآن الكريم
WwW.Ryadh-Quran.NeT
رياض القرآن is offline   قديم 27-10-2006, 11:08 PM
الرد مع إقتباس
عضو نشيط
#3  

درس جميل اشكرك اخي الكريم






vb2vb is offline   قديم 28-10-2006, 12:53 AM
الرد مع إقتباس
عضو فعال
#4  

بما ان الموضوع بتعلق بالوقت والتاريخ .. أولاً جزاك الله خير اخي على الشرح الجميل .. ثانياً اود ان اطرح هذه الدالة لحساب العمر والتي قمت ببرمجتها في إحدى الأوقات .. شرح الكود موجود ضمن الدالة بالإنجليزية :
كود PHP:
function countage($date,$changetotime=0,$showdecimal 0) {
    
# if you use an already unix timestamped date don't activate $changetotime .. but if you
    # use a normal date activate it.
    // change the specified date to unixstamp time format
    
if ($changetotime == 1) {
        
$date strtotime($date);
    }

    
// get difference between today's date & the specified one in seconds
    
$difference strtotime("now") - $date;

    
// return the difference in years
    
$retval $difference / (60 60 24 365);

    
// if we don't want to show decimal fields ..
    
if ($showdecimal == "0") {
        
// we'll round the result :D
        
$retval round($retval);
    }

    
// return the calculated age ..!!
    
return $retval;

تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر is offline   قديم 28-10-2006, 12:21 PM
الرد مع إقتباس
عضو فعال
#5  

امممممممم

دالة أخرى من برمجتي سابقاً لطباعة " اليوم " أو "بالأمس" حسب التاريخ المعطى ..

لاحظ أنه يمكنك التعديل على الدالة وتطويرها بتغيير واضافة الشروط لطباعة قبل أسبوع مثلاً .. أو أي شيء مشابه ..

كود PHP:
function datetoword($date) {
    
# $date must be a unix timestamp formatted time

    // calculate the diffirence between "now" and $date
    
$daysdiffr time() - $date;

    
// get the diffirence in days
    
$daysdiffr $daysdiffr 86400;

    
// round the diffirence to get rid of decimals
    
$daysdiffr round($daysdiffr);

    if (
$daysdiffr=="0") {
        
// if the diffirence equals zero , that means that the date is in this day
        
return "اليوم";
    } elseif (
$daysdiffr=="1") {
        
// if the diffirence is 1 , that means that this date was yesterday
        
return "بالأمس";
    } else {
        
// you can add your statements here or edit this statements as you like
        
return 0;
    }

تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر is offline   قديم 28-10-2006, 12:30 PM
الرد مع إقتباس
عضو فعال
#6  

للأسف لو كان لدي وقت لشرحت strftime والفرق بينها وبين date ..
http://www.php.net/strftime
http://www.php.net/date

تحياتي، sBForum






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر is offline   قديم 28-10-2006, 12:32 PM
الرد مع إقتباس
عضو نشيط
#7  

شكرا اخي الكريم علي الشرح الهام
اعلم ان الموضوع قديم لكن توجب علي الشكر






__________________
قناة التكنولوجيا-مشروع أنشاء قناة تتحدث عن التكنولوجيا بجميع انوعها
www.alfker.com
دليل اسعار الموبيلات في مصر
www.mob4me.net
AROON is offline   قديم 08-09-2011, 05:12 PM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح



جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 07:58 PM.