الحلقة الرابعة والأربعين من سلسلة تعلم البرمجة باسهل طريقة

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الحلقة الرابعة والأربعين من سلسلة تعلم البرمجة باسهل طريقة

    العمل مع الوقت والتاريخ
    Working with Time and Date



    متغيرات التاريخ
    Datetime Variables



    داخليًا، يتم تمثيل المتغير الزمني (datetime) كعدد الثواني المنقضية منذ الأول من يناير 1970. على سبيل المثال، فإن يوم 15 يونيو 2009 في الساعة 00:00 (منتصف الليل) سيكون بقيمة 1245024000. ميزة تنسيق datetime هي أنه يسهل مقارنة الأوقات في الماضي والمستقبل والتلاعب الرياضي بها بشكل سهل جدًا.

    على سبيل المثال، إذا كنت ترغب في التحقق مما إذا كان تاريخ ما يأتي قبل أو بعد تاريخ آخر، يمكنك القيام بعملية نسبية بسيطة. لنفترض أن تاريخ البدء (StartDate) هو 15 يونيو 2009 في الساعة 14:00، وتاريخ الانتهاء (EndDate) هو 16 يونيو 2009 في الساعة 5:00.


    كود PHP:
    if(StartDate < EndDate) // Result is true
    if(StartDate > EndDate) // Result is false 
    

    ميزة أخرى هي أنه يمكنك إضافة أو طرح الوقت من تاريخ محدد، ببساطة عن طريق إضافة أو طرح العدد المناسب من الثواني. إذا كنت ترغب في إضافة 24 ساعة إلى StartDate، ما عليك سوى إضافة عدد الثواني في يوم واحد:

    كود PHP:
    datetime AddDay = StartDate + 86400; 
    
    إذا كنت تخطط للقيام بالعديد من العمليات الرياضية باستخدام المتغيرات الزمنية (datetime)، قد يكون من الجيد تعريف بعض الثوابت الصحيحة (integer constants) لتمثيل وحدات زمنية معينة:


    كود PHP:
    #define SEC_H1 3600
    // Seconds in an hour
    #define SEC_D1 86400
    // Seconds in a day 
    
    عيب تنسيق datetime هو أنه غير قابل للقراءة بشكل جيد. لا يمكنك النظر إلى قيمة مثل 1245024000 وأن تستطيع أن تعرف تلقائيًا أنه يمثل يونيو 15، 2009 في الساعة 00:00. لهذا الغرض، نستخدم وظائف التحويل لتحويل datetime إلى شكل أكثر قراءةً والعكس.



    ثوابت التاريخ
    Datetime Constants


    ثابت datetime هو تاريخ ووقت معروض بالتنسيق النصي التالي: yyyy.mm.dd hh:mm.
    على سبيل المثال، سيكون يوم 15 يونيو 2009 في الساعة 00:00 بالتنسيق 2009.06.15 00:00. هناك تنسيقات أخرى قابلة للقبول.

    تنسيقات الثوابت datetime: موضوع مرجع MQL الأساسي - أنواع البيانات - الثوابت Datetime يحتوي على مزيد من المعلومات. سنستخدم التنسيق المقدم أعلاه، حيث أنه التنسيق الوحيد الذي يمكن تحويله بسهولة.
    لتحويل متغير datetime إلى ثابت سلسلة نصية، استخدم وظيفة TimeToStr(). هنا هو الصيغة:


    كود PHP:
    string TimeToStr(datetime Time, int Output = TIME_DATE|TIME_MINUTES); 
    
    المتغير "Time" هو المتغير "datetime" المعبر عنه بعدد الثواني المنقضية منذ الأول من يناير 1970.

    المعامل "Output" هو معامل اختياري يخرج الثابت بصورة تاريخ فقط، أو ساعة ودقيقة فقط، أو ساعة ودقيقة وثوانٍ، أو أي تركيبة من تاريخ ووقت. القيم الصحيحة للمدخلات هي:

    TIME_DATE: يخرج التاريخ فقط، على سبيل المثال، 2009.06.15
    TIME_MINUTES: يخرج الساعة والدقيقة، على سبيل المثال، 05:30
    TIME_SECONDS: يخرج الساعة والدقيقة والثواني، على سبيل المثال، 05:30:45

    لإخراج الثابت النصي في التنسيق الافتراضي yyyy.mm.dd hh:mm، اترك المعامل "Output" فارغًا. إذا كنت ترغب فقط في التاريخ أو الساعة والدقيقة (أو الثواني)، استخدم الوسيطة المناسبة. في هذا المثال، سنفترض أن StartTime يساوي 2009.06.15 05:30:45.


    كود PHP:
    TimeToStr(StartTime,TIME_DATE)
    // Returns "2009.06.15"
    TimeToStr(StartTime,TIME_SECONDS)
    // Returns "05:30:45"
    TimeToStr(StartTime,TIME_MINUTES)
    // Returns "05:30"
    TimeToStr(StartTime,TIME_DATE|TIME_SECONDS) // Returns "2009.06.15 05:30:45"
    TimeToStr(StartTime)
    // Returns "2009.06.15 05:30" 
    
    يمكننا إنشاء ثابت datetime باستخدام اتصال السلاسل (string concatenation)، وتحويله إلى متغير datetime باستخدام وظيفة StrToTime(). الصيغة مطابقة لـ TimeToStr() أعلاه، ولكن بدون المعامل Output. يجب أن يكون الثابت النصي في التنسيق yyyy.mm.dd hh:mm ليتم التحويل بشكل صحيح.

    فيما يلي مثال لكيفية تجميع ثابت datetime باستخدام أعداد صحيحة، ثم تحويل تلك الأعداد الصحيحة إلى تنسيق سلسلة نصية، وتحويل السلسلة إلى متغير datetime. أولاً، سنعلن بعض المتغيرات الخارجية لتعيين وقت وتاريخ:

    كود PHP:
    extern int UseMonth = 6;
    extern int UseDay = 15;
    extern int UseHour = 5;
    extern int UseMinute = 30; 
    
    بعد ذلك، نقوم بإنشاء الثابت النصي باستخدام وظيفة StringConcatenate()، وأخيرًا نقوم بتحويل السلسلة إلى تنسيق datetime باستخدام وظيفة StrToTime().


    كود PHP:
    string DateConstant = StringConcatenate(Year(),".",UseMonth,".",UseDay," ",
    UseHour,":",UseMinute);
    // DateConstant is "2009.6.15 05:30"
    datetime StartTime = StrToTime(DateConstant);
    // StartTime is "1245043800" 
    
    يرجى ملاحظة أنه في وظيفة StringConcatenate()، نستخدم Year() لإرجاع السنة الحالية بدلاً من استخدام متغير خارجي. يمكنك استخدام وظائف مثل Month() و Day() وغيرها لإدراج قيم الوقت الحالية. سنتناول هذه الوظائف في القسم التالي ان شاء الله.



يعمل...
X