دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
وحدات السلاسل والوقت
وحدة التاريخ والوقت
الهدف
تعديل السجلات وتعيين تواريخ الشحن للمواد باستخدام وظائف وحدة التاريخ والوقت.
الطابق السفلي من الملحق في منطقة البناء الجديدة هو مستودع يحتوي على بعض المواد التي تم تسليمها مؤخرًا والتي تم تغليفها وجاهزة للشحن إلى المناطق المحيطة بالبناء الجديد. يجب أن يتم وضع العلامات عليها بالتواريخ والأوقات الصحيحة، والتأكد من أن أي علامات تم وضعها بالفعل تحتوي على جميع المعلومات ذات الصلة. للقيام بذلك، يمكننا أن نستغرق الوقت لكتابة وتنسيق التواريخ والأوقات يدويًا، ولكن هناك طريقة أسرع بكثير للقيام بذلك باستخدام وحدة التاريخ والوقت.
يتم استيراد وحدة التاريخ والوقت عن طريق كتابة 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 بجوار السجاد الملون، سيتم إكمال المستوى.