إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    بايثون التعامل مع التاريخ و الوقت

    مقدمة

    بايثون تحتوي على أكثر من موديول جاهز للتعامل مع التاريخ, الوقت و التقويم بكل سهولة.
    في هذا الدرس ستتعلم طريقة الإستفادة من الموديول datetime و الموديول calendar لعرض التاريخ, الوقت و التقويم بالشكل الذي تحتاجه.

    الموديول datetime

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

    • date: يحتوي على مجموعة دوال خاصة للتعامل مع التاريخ.
    • time: يحتوي على مجموعة دوال خاصة للتعامل مع الوقت.
    • datetime: يحتوي على مجموعة دوال خاصة للتعامل مع التاريخ و الوقت.
    • timedelta: يحتوي على مجموعة دوال خاصة لحساب الفرق بدقة بين تاريخ و آخر.
    • timezone: يحتوي على مجموعة دوال خاصة لحساب فرق التوقيت بين تاريخ و آخر على حسب المنطقة الزمنية لكل تاريخ.

    في المثال التالي قمنا بتخزين التاريخ و الوقت الحالي بالإعتماد على الدالة now() الموجودة في الكلاس datetime الموجود بداخل الموديول datetime.

    المثال الأول

    Test.py
    # datetime هنا قمنا بتضمين كل محتوى الموديول
    import datetime
    
    # dt في الكائن datetime ككائن من الكلاس now() هنا قمنا بتخزين التاريخ و الوقت الحالي الذي سترجعه الدالة
    dt = datetime.datetime.now()
    
    # dt هنا قمنا بعرض قيمة الكائن
    print(dt)
    		

    سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

    2018-12-01 09:13:09.598797

    نلاحظ من المثال السابق أن الكلاس datetime يتيح لنا الحصول على التاريخ و الوقت بدقة عالية لأنه أعطانا المعلومات التالية بالترتيب:
    السنة, الشهر, اليوم, الساعة, الدقيقة, الثانية, أجزاء الثانية القادمة.

    طبعاً الكلاس datetime يحتوي على دوال و خصائص جاهزة تتيح لك التعامل مع التاريخ و الوقت كيفما شئت لتخزينه أو عرضه بالشكل الذي تريد.
    لا تقلق سنتعرف على خصائص و دوال الكلاس datetime بتفصيل في هذا الدرس.

    كونستركتور الكلاس datetime

    الكلاس datetime يحتوي على الكونستركتور التالي.

    class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
    	

    إذاً, عند إنشاء كائن datetime, يمكنك مباشرةً أن تدخل تاريخ و وقت فيه.

    فعلياً, أنت مجبر على إدخال قيمة مكان البارميترات year و month و day لأنه لم يتم إعطائهم قيم إفتراضية.
    بالنسبة للباراميترات الأخرى فيمكنك تحديد قيمهم الإفتراضية أو عدم تحديدها لأنه تم إعطائهم قيم إفتراضية.

    القيم التي يمكنك تمريرها للبارميترات هي التالية:

    • year: عدد صحيح قيمته ضمن النطاق 1 <= year <= 9999.
    • month: عدد صحيح قيمته ضمن النطاق 1 <= year <= 12.
    • day: عدد صحيح قيمته بين 1 و آخر يوم موجود في الشهر.
    • hour: عدد صحيح قيمته ضمن النطاق 0 <= year < 24.
    • minute: عدد صحيح قيمته ضمن النطاق 0 <= year < 60.
    • second: عدد صحيح قيمته ضمن النطاق 0 <= year < 60.
    • microsecond: عدد صحيح قيمته ضمن النطاق 0 <= year < 1000000.
    • fold: عدد صحيح قيمته 0 أو 1.

    في حال قمت بتمرير أي قيمة للباراميترات خارجة عن النطاق المسموح سيحدث خطأ ValueError.


    في المثال التالي قمنا بإنشاء كائن من الكلاس datetime مع تحديد التاريخ الذي نريد تخزينه فيه مباشرةً عند إنشاءه.

    المثال الأول

    Test.py
    # datetime هنا قمنا بتضمين كل محتوى الموديول
    import datetime
    
    # dt يمثل تاريخ محدد و قمنا بتخزينه في الكائن datetime هنا قمنا بإنشاء كائن من الكلاس
    dt = datetime.datetime(2012, 4, 5)
    
    # dt هنا قمنا بعرض قيمة الكائن
    print(dt)
    		

    سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

    2012-04-05 00:00:00

    في المثال التالي قمنا بإنشاء كائن من الكلاس datetime مع تحديد التاريخ و الوقت الذي نريد تخزينه فيه مباشرةً عند إنشاءه.

    المثال الثاني

    Test.py
    # datetime هنا قمنا بتضمين كل محتوى الموديول
    import datetime
    
    # dt يمثل تاريخ + وقت محدد و قمنا بتخزينه في الكائن datetime هنا قمنا بإنشاء كائن من الكلاس
    dt = datetime.datetime(2012, 4, 5, 7, 30, 46)
    
    # dt هنا قمنا بعرض قيمة الكائن
    print(dt)
    		

    سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

    2012-04-05 07:30:46

    خصائص الكلاس datetime

    الجدول التالي يحتوي على خصائص الكلاس datetime الموجود في الموديول datetime.

    إسم الثابت تعريفه
    year يحتوي على رقم السنة المخزن في كائن الـdatetime.
    month يحتوي على رقم الشهر المخزن في كائن الـdatetime.
    day يحتوي على رقم اليوم المخزن في كائن الـdatetime.
    hour يحتوي على رقم الساعة المخزن في كائن الـdatetime.
    minute يحتوي على رقم الدقائق المخزن في كائن الـdatetime.
    second يحتوي على رقم الثواني المخزن في كائن الـdatetime.
    microsecond يحتوي على رقم أجزاء الثواني المخزن في كائن الـdatetime.

    في المثال التالي قمنا بعرض السنة فقط من التاريخ المخزن في كائن الـ datetime بالإعتماد على الخاصية year.

    مثال

    Test.py
    # datetime هنا قمنا بتضمين كل محتوى الموديول
    import datetime
    
    # dt في الكائن datetime ككائن من الكلاس now() هنا قمنا بتخزين التاريخ و الوقت الحالي الذي سترجعه الدالة
    dt = datetime.datetime.now()
    
    # dt الموجودة في الكائن year هنا قمنا بعرض قيمة الخاصية
    print('This tutorial is written in', dt.year)
    		

    سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

    This tutorial is written in 2018

    تحديد فورمات التاريخ و الوقت

    في البداية, المقصود بتحديد فورمات ( Format ) التاريخ و الوقت هو عرضه أو تخزينه أو بشكل مختلف.

    لتحديد فورمات التاريخ و الوقت الذي نريد إظهاره نستخدم دالة جاهزة في الكلاس datetime إسمها strftime().
    إستخدام هذه الدالة سهل جداً, حيث نستدعيها من كائن الـ datetime و من ثم نمرر لها رمز أو مجموعة رموز منفصلة لتحديد الأشياء التي نريدها أن ترجعهم لنا كنص.


    في المثال التالي قمنا بالإعتماد على الدالة strftime() الموجودة في الكلاس datetime لعرض إسم الشهر الحالي.

    مثال

    Test.py
    # datetime هنا قمنا بتضمين كل محتوى الموديول
    import datetime
    
    # dt في الكائن datetime ككائن من الكلاس now() هنا قمنا بتخزين التاريخ و الوقت الحالي الذي سترجعه الدالة
    dt = datetime.datetime.now()
    
    # و من ثم قمنا بطباعته dt لها كنص حتى ترجع إسم الشهر المخزن في الكائن %B و تمرير الرمز strftime() هنا قمنا باستدعاء الدالة
    print(dt.strftime('%B'))
    		

    سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.

    December


    الرموز التي يمكن إستخدامها في الدالة strftime()

    الجدوال التالي يحتوي على الرموز التي يمكنك إستخدامها عند تحديد فورمات التاريخ و الوقت باستخدام الدالة strftime().

    الرمز إستخدامه مثال مثال شامل
    %a لإظهار إسم اليوم بشكل مختصر Mon شاهد المثال »
    %A لإظهار إسم اليوم بشكل كامل Monday شاهد المثال »
    %w لإظهار رقم اليوم بالنسبة للأسبوع.
    هنا أول يوم يعتبر يوم الأحد ( Sunday ) و هو يساوي 0, و آخر يوم في الأسبوع هو يوم السبت ( Saturday ) و هو يساوي 6
    1 شاهد المثال »
    %d لإظهار رقم اليوم بالنسبة للشهر, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 01 - 31 03 شاهد المثال »
    %b لإظهار إسم الشهر بشكل مختصر Dec شاهد المثال »
    %B لإظهار إسم الشهر كاملاَ December شاهد المثال »
    %m لإظهار رقم الشهر بالنسبة للسنة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 01 - 12 12 شاهد المثال »
    %y لإظهار رقم السنة بشكل مختصر, أي لإظهار أول رقمين منها فقط. 18 شاهد المثال »
    %Y لإظهار رقم السنة. 2018 شاهد المثال »
    %H لإظهار رقم الساعة بنظام 24 ساعة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 23 14 شاهد المثال »
    %I لإظهار رقم الساعة بنظام 12 ساعة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 11 2 شاهد المثال »
    %p لإظهار كلمة AM إذا كان الوقت قبل الساعة 12 نهاراً و لإظهار كلمة PM إذا كان الوقت بعدها PM شاهد المثال »
    %M لإظهار رقم الدقيقة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 59 24 شاهد المثال »
    %S لإظهار رقم الثانية, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 59 09 شاهد المثال »
    %f لإظهار أجزاء الثانية بالـ Microsecond, أي لإظهار الثانية الواحدة كمليون جزء. مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 000000 - 999999 034208 شاهد المثال »
    %j لإظهار رقم اليوم بالنسبة للسنة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 001 - 366 337 شاهد المثال »
    %U لإظهار رقم الأسبوع بالنسبة للسنة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 53 و أول يوم في كل أسبوع هو يوم الأحد ( Sunday ) 48 شاهد المثال »
    %W لإظهار رقم الأسبوع بالنسبة للسنة, مع الأخذ بالإعتبار أن هذا الرقم سيكون ضمن النطاق 00 - 53 و أول يوم في كل أسبوع هو يوم الإثنين ( Monday ) 49 شاهد المثال »
    %c لإظهار التاريخ و الوقت الحالي بشكل كامل Mon Dec 3 18:52:05 2018 شاهد المثال »
    %x لإظهار التاريخ الحالي بشكل كامل 12/03/18 شاهد المثال »
    %X لإظهار الوقت الحالي بشكل كامل 18:52:05 شاهد المثال »

    الموديول calendar

    الموديول calendar يحتوي على مجموعة كلاسات و دوال جاهزة للتعامل مع التقويم و لعرضه بشكل جميل جداً.
    فمثلاً, يحتوي على دوال جاهزة لعرض تقويم سنة معينة أو شهر محدد في السنة.


    في المثال التالي قمنا بعرض تقويم سنة 2018 بالإعتماد على الدالة prcal() الموجودة في الكلاس calendar الموجود بداخل الموديول calendar.

    المثال الأول

    Test.py
    # calendar هنا قمنا بتضمين كل محتوى الموديول
    import calendar
    
    # لعرض تقويم سنة 2018 calendar من الكلاس prcal() هنا قمنا باستدعاء الدالة
    calendar.prcal(2018)
    		

    سنحصل على النتيجة التالية عند التشغيل.

                                      2018
    
          January                   February                   March
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
     1  2  3  4  5  6  7                1  2  3  4                1  2  3  4
     8  9 10 11 12 13 14       5  6  7  8  9 10 11       5  6  7  8  9 10 11
    15 16 17 18 19 20 21      12 13 14 15 16 17 18      12 13 14 15 16 17 18
    22 23 24 25 26 27 28      19 20 21 22 23 24 25      19 20 21 22 23 24 25
    29 30 31                  26 27 28                  26 27 28 29 30 31
    
           April                      May                       June
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                       1          1  2  3  4  5  6                   1  2  3
     2  3  4  5  6  7  8       7  8  9 10 11 12 13       4  5  6  7  8  9 10
     9 10 11 12 13 14 15      14 15 16 17 18 19 20      11 12 13 14 15 16 17
    16 17 18 19 20 21 22      21 22 23 24 25 26 27      18 19 20 21 22 23 24
    23 24 25 26 27 28 29      28 29 30 31               25 26 27 28 29 30
    30
    
            July                     August                  September
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                       1             1  2  3  4  5                      1  2
     2  3  4  5  6  7  8       6  7  8  9 10 11 12       3  4  5  6  7  8  9
     9 10 11 12 13 14 15      13 14 15 16 17 18 19      10 11 12 13 14 15 16
    16 17 18 19 20 21 22      20 21 22 23 24 25 26      17 18 19 20 21 22 23
    23 24 25 26 27 28 29      27 28 29 30 31            24 25 26 27 28 29 30
    30 31
    
          October                   November                  December
    Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
     1  2  3  4  5  6  7                1  2  3  4                      1  2
     8  9 10 11 12 13 14       5  6  7  8  9 10 11       3  4  5  6  7  8  9
    15 16 17 18 19 20 21      12 13 14 15 16 17 18      10 11 12 13 14 15 16
    22 23 24 25 26 27 28      19 20 21 22 23 24 25      17 18 19 20 21 22 23
    29 30 31                  26 27 28 29 30            24 25 26 27 28 29 30
                                                        31
    		

    دوال الكلاس calendar

    الجدول التالي يحتوي على دوال الكلاس calendar الأكثر إستخداماً.

    إسم الدالة مع تعريفها
    calendar.prcal(year, w=0, l=0, c=6, m=3) تستخدم لطباعة تقويم سنة معينة.
    مكان الباراميتر year نمرر السنة التي نريد طباعة تقويمها.
    شاهد المثال »
    calendar.isleap(year) تستخدم لمعرفة ما إذا كانت السنة كبيسة أم لا.
    مكان الباراميتر year نمرر رقم السنة التي نريد التشييك عليها.
    في حال كانت قيمة year تمثل سنة كبيسة ترجع True, إن لم تكن كذلك ترجع False.
    شاهد المثال »
    calendar.leapdays(y1, y2) ترجع عدد السنوات الكبيسة الموجودة من سنة إلى سنة محددة.
    مكان الباراميتر y1 نمرر رقم السنة التي نريد أن نبدأ من عندها.
    مكان الباراميتر y2 نمرر رقم السنة التي نريد أن نتوقف قبلها.
    شاهد المثال »
    calendar.setfirstweekday(weekday) إفتراضياً, عند عرض التقويم فإنه يظهر يوم الإثنين ( Monday ) كأول يوم في الأسبوع.
    هذه الدالة تستخدم لتحديد أول يوم سيبدأ به كل أسبوع.
    مكان الباراميتر weekday نمرر إحدى ثوابت الكلاس calendar التي تشير إلى إسم اليوم أو Index الثابت:
    • calendar.MONDAY أو 0 لتعيين الإثنين كأول يوم في الأسبوع.
    • calendar.TUESDAY أو 1 لتعيين الثلاثاء كأول يوم في الأسبوع.
    • calendar.WEDNESDAY أو 2 لتعيين الأربعاء كأول يوم في الأسبوع.
    • calendar.THURSDAY أو 3 لتعيين الخميس كأول يوم في الأسبوع.
    • calendar.FRIDAY أو 4 لتعيين الجمعة كأول يوم في الأسبوع.
    • calendar.SATURDAY أو 5 لتعيين السبت كأول يوم في الأسبوع.
    • calendar.SUNDAY أو 6 لتعيين الأحد كأول يوم في الأسبوع.
    شاهد المثال »
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب