النتائج 1 إلى 7 من 7

الموضوع: [درس] التعامل مع الوقت والتاريخ

  1. #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 الحالى تلقائيا

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







  2. #2


    درس موفق

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

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





    __________________
    موقع رياض القرآن متخصص بالقرآن الكريم
    WwW.Ryadh-Quran.NeT

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Sep 2002
    المشاركات
    182


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






  4. #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

  5. #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

  6. #6


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

    تحياتي، sBForum





    __________________
    أحمد أبو النصر
    Junior php Developer
    +20166196074

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    185


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





    __________________
    قناة التكنولوجيا-مشروع أنشاء قناة تتحدث عن التكنولوجيا بجميع انوعها
    www.alfker.com
    دليل اسعار الموبيلات في مصر
    www.mob4me.net





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض