Coding for KidsCoding for Kids
المستويات الإبداعيةالتحدياتدليل المعلم
صوت للميزات
دورة تطوير بايثون المتقدمة
الفصل
>
المستوى

وحدات السلاسل والوقت
وحدة التاريخ والوقت

الهدف

تعديل السجلات وتعيين تواريخ الشحن للمواد باستخدام وظائف وحدة التاريخ والوقت.

الطابق السفلي من الملحق في منطقة البناء الجديدة هو مستودع يحتوي على بعض المواد التي تم تسليمها مؤخرًا والتي تم تغليفها وجاهزة للشحن إلى المناطق المحيطة بالبناء الجديد. يجب أن يتم وضع العلامات عليها بالتواريخ والأوقات الصحيحة، والتأكد من أن أي علامات تم وضعها بالفعل تحتوي على جميع المعلومات ذات الصلة. للقيام بذلك، يمكننا أن نستغرق الوقت لكتابة وتنسيق التواريخ والأوقات يدويًا، ولكن هناك طريقة أسرع بكثير للقيام بذلك باستخدام وحدة التاريخ والوقت.

يتم استيراد وحدة التاريخ والوقت عن طريق كتابة import datetime، وهذا يفتح سلسلة من الدوال القوية التي تتيح لك قراءة وتعيين أوقات وتواريخ منسقة يمكنك تخزينها في كائنات. يمكنك أيضًا استخدام: from datetime import timezone, timedelta من أجل تعيين المناطق الزمنية. الدوال التالية يتم فتحها عند استيراد الوحدة:

  • datetime.datetime(): تتيح لك تعيين وتخزين وقت تختاره، تأخذ عدة وسائط على النحو التالي: year، month، day، hour، minute، second، microsecond، timezone. لا تحتاج إلى إدخال جميع الوسائط، بل فقط تلك التي ترغب في استخدامها.
  • datetime.datetime.now(): تُعيد تاريخك ووقتك الحالي كما سيظهر في الساعة.
  • datetime.datetime.date(): تُعيد تاريخ datetime فقط، بدون وقت.
  • datetime.datetime.time(): تُعيد وقت datetime فقط، بدون تاريخ.
  • datetime.datetime.timestamp(): تُعيد الطابع الزمني للتاريخ والوقت كرمز UNIX.
  • timezone(): تتيح لك تعيين منطقة زمنية لاستخدامها مع وسائط التاريخ والوقت الخاصة بك.
  • datetime.strftime(): تتيح لك استخراج معلومات محددة من التاريخ والوقت وتنسيقه وفقًا لرغبتك باستخدام أكواد محددة. لأغراضنا، سنستخدم الأكواد التالية:
    • "%a" : اليوم من أيام الأسبوع، مختصر
    • "%d" : يوم الشهر
    • "%B" : اسم الشهر، مكتوب بالكامل
    • "%I" : الساعة، بنظام 12 ساعة
    • "%M" : الدقيقة
    • "%p" : تقسم اليوم، صباحًا/مساءً
    • "%x" : تنسيق التاريخ المحلي
    • "%X" : تنسيق الوقت المحلي
    • "%j" : يوم من أيام السنة
    • "%U" : أسبوع من السنة
    • "%z" : المنطقة الزمنية UTC

للبدء، توجه إلى علامة X الخفيفة ووجهك نحو المكتب، استخدم دالة read() للتحقق من تواريخ التعبئة للشحنات بالإضافة إلى تواريخ بدء وانتهاء المشاريع. دون ملاحظة تواريخ البدء والانتهاء المذكورة في الوثيقة (شهر/يوم/سنة). النقاط الثلاثة الأولى للبيانات المكتوبة في المذكرة وكذلك المنطقة الزمنية مكتوبة مسبقًا في محرر الكود لسهولة الاستخدام في الدوال اللاحقة.

على هذا الفضاء نفسه، أنشئ متغيرًا باسم today وخزن فيه القيمة المرجعة من datetime.datetime.now(). استخدم str() لتحويل القيمة إلى سلسلة حتى تكون بتنسيق قابل للقراءة، مثل: today = str(datetime.datetime.now()). استخدم دالة display() لرسم تاريخ اليوم في المذكرة، وبذلك يتم تعيين تاريخ تخصيصات الشحن ويمكنك البدء في إضافة نقاط البيانات المفقودة في المناطق اللازمة.

توجه إلى علامة X الذهبية بجوار المكتب وسنقوم بحساب ورسم عدد الأيام التي سيستغرقها هذا المشروع. هناك متغيران مكتوبان في المحرر بأسماء start و end يخزنان datetime. دون ملاحظة تواريخ البدء والانتهاء التي قرأتها سابقًا في الأماكن المخصصة. أنشئ متغيرًا باسم result وخزن فيه نتيجة الطرح بين المتغيرين end و start. استخدم دالة str() لتحويل القيمة إلى تنسيق سلسلة قابل للقراءة، مثل: result = str(end-start). استخدم دالة write() لرسم المتغير result، لتدوين المدة التي سيستغرقها المشروع.

من هنا سننتقل إلى علامة X الذهبية بجوار السجادة الحمراء وسنتجه نحو علامات X بجوار صناديق السجاد الأحمر في العمود الأيسر. هنا سنقوم بإضافة أجزاء محددة من تواريخ التعبئة المفقودة من على الصناديق باستخدام datetime(). في المحرر سيكون هناك تاريخ مكتوب مسبقًا مخصص للمتغير red_date، سنستخرج أجزاء مختلفة من البيانات ونستخدمها لوضع العلامات على الصناديق.

بالنسبة للسجاد الأحمر:

  • على علامة X الذهبية، واجه الصناديق وأنشئ متغيرًا باسم red_days وخزن فيه التاريخ بدون الوقت باستخدام date() من المتغير red_date، وقم بتحويله باستخدام str()، مثل: red_days = str(red_date.date()). استخدم دالة write() لوضع العلامات على الصناديق باستخدام red_days.

  • على علامة X الخفيفة، واجه الصناديق وأنشئ متغيرًا باسم red_time وخزن فيه الوقت بدون التاريخ باستخدام time() من المتغير red_date وقم بتحويله باستخدام str()، مثل: red_time = str(red_date.time()). استخدم دالة write() لوضع العلامات على الصناديق باستخدام red_time.

  • على علامة X الداكنة، واجه الصناديق وأنشئ متغيرًا باسم red_timestamp وخزن فيه الطابع الزمني المحسوب من المتغير red_date، مثل: red_timestamp = red_date.timestamp(). استخدم دالة write() لوضع العلامات على الصناديق باستخدام red_timestamp.

تابع ذلك بالانتقال إلى علامات X أمام صناديق السجاد الأزرق. كما في السابق، هناك سلسلة من ثلاث (3) علامات X ملونة، في هذه الحالة تُشير إلى المتغير المكتوب مسبقًا blue_date لاستكمال العلامات. انتقل عبر العمود واستخدم دالة strftime() لإضافة العناصر المفقودة إلى علامات الشحن. على عكس الدوال السابقة، تتطلب هذه الدالة رمزًا محددًا لاستخراج وتنسيق العناصر في التاريخ المستهدف. على سبيل المثال، إذا أردنا الحصول على يوم الأسبوع للمتغير blue_date ستستخدم الرمز "%a" مع دالة strftime() مثل: blue_date.strftime("%a").

بالنسبة لعلامات X بجوار صناديق السجاد الأزرق، استخدم دالة strftime() مع الرمز المحدد المطلوب. انظر عبر قائمة الأكواد الموضحة سابقًا حسب المتطلبات. بالنسبة للسجاد الأزرق:

  • على علامة X الذهبية، واجه الصناديق وأنشئ متغيرًا باسم blue_weekday وخزن فيه يوم الأسبوع باستخدام strftime() من المتغير blue_date مثل: blue_day = blue_date.strftime("%a"). أنشئ متغيرًا آخر باسم blue_day وخزن فيه يوم الشهر باستخدام strftime() من المتغير blue_date. أنشئ متغيرًا آخر باسم blue_month وخزن فيه اسم الشهر، مكتوب بالكامل، باستخدام strftime() من المتغير blue_date. أدخل المتغيرات blue_weekday، blue_day و blue_month في دالة write() المكتوبة مسبقًا.

  • على علامة X الخفيفة، واجه الصناديق وأنشئ متغيرًا باسم blue_hour وخزن فيه الساعة، بنظام 12 ساعة، باستخدام strftime() من المتغير blue_date. أنشئ متغيرًا آخر باسم blue_minute وخزن فيه الدقيقة باستخدام strftime() من المتغير blue_date. أنشئ متغيرًا آخر باسم blue_meridian وخزن فيه تقسيم اليوم، صباحًا/مساءً، باستخدام strftime() من المتغير blue_date. أدخل المتغيرات blue_hour، blue_minute و blue_meridian في دالة write() المكتوبة مسبقًا.

  • على علامة X الداكنة، واجه الصناديق وأنشئ متغيرًا باسم blue_local_date وخزن فيه تنسيق التاريخ المحلي، باستخدام strftime() من المتغير blue_date. أنشئ متغيرًا آخر باسم blue_local_time وخزن فيه تنسيق الوقت المحلي باستخدام strftime() من المتغير blue_date. أدخل المتغيرات blue_local_date، blue_local_time و blue_meridian في دالة display() المكتوبة مسبقًا.

أخيرًا، سنتوجه إلى علامة X الذهبية بجوار السجادة الخضراء وسنتجه نحو علامات X بجوار صناديق السجاد الأخضر في العمود الأيمن. هنا سنواصل إضافة أجزاء محددة من تواريخ التعبئة المفقودة من على الصناديق باستخدام strftime(). في المحرر سيكون هناك تاريخ مكتوب مسبقًا مخصص للمتغير green_date، سنستخرج أجزاء مختلفة من البيانات ونستخدمها لوضع العلامات على الصناديق.

بالنسبة للسجاد الأخضر:

  • على علامة X الذهبية، واجه الصناديق وأنشئ متغيرًا باسم green_day وخزن فيه يوم السنة باستخدام strftime() من المتغير green_date. استخدم دالة write() لوضع العلامات على الصناديق باستخدام green_day.

  • على علامة X الخفيفة، واجه الصناديق وأنشئ متغيرًا باسم green_week وخزن فيه أسبوع السنة باستخدام strftime() من المتغير green_date. استخدم دالة write() لوضع العلامات على الصناديق باستخدام green_week.

  • على علامة X الداكنة، واجه الصناديق وأنشئ متغيرًا باسم green_timezone وخزن فيه المنطقة الزمنية UTC باستخدام strftime() من المتغير green_date. استخدم دالة write() لوضع العلامات على الصناديق باستخدام green_timezone.

بمجرد تسجيل جميع العلامات على علامات X بجوار السجاد الملون، سيتم إكمال المستوى.

كتاب الكود