Python Programming

إتقان تحويلات التاريخ والوقت في بايثون

Spread the love

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

محتويات

استخدام datetime.strptime()

تُعد دالة datetime.strptime() خيارًا شائعًا لتحويل السلسلة إلى datetime. تأخذ حُجتين:

  1. date_string: السلسلة التي تحتوي على معلومات التاريخ و/أو الوقت.
  2. format: سلسلة تنسيق تحدد كيفية تمثيل التاريخ والوقت في date_string.

تستخدم سلسلة التنسيق توجيهات لتمثيل أجزاء مختلفة من التاريخ والوقت. فيما يلي بعض التوجيهات الرئيسية:

التوجيه المعنى مثال
%Y السنة مع القرن 2024
%y السنة بدون قرن 24
%m الشهر (01-12) 03
%d يوم الشهر (01-31) 15
%H الساعة (الساعة 24، 00-23) 14
%I الساعة (الساعة 12، 01-12) 02
%p صباحًا/مساءً PM
%M الدقيقة (00-59) 30
%S الثانية (00-59) 00
%f الميكروثانية (000000-999999) 123456
%A اسم يوم الأسبوع (كامل) Monday
%a اسم يوم الأسبوع (مختصر) Mon
%B اسم الشهر (كامل) March
%b اسم الشهر (مختصر) Mar

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


from datetime import datetime

date_string = "2024-03-15 14:30:00"
format = "%Y-%m-%d %H:%M:%S"

datetime_object = datetime.strptime(date_string, format)
print(datetime_object)  # الإخراج: 2024-03-15 14:30:00

طرق تحويل بديلة

للتنسيقات الأكثر تعقيدًا أو الأقل شيوعًا، ضع في اعتبارك استخدام مكتبات مثل dateutil:


from dateutil import parser

date_string = "March 15th, 2024 2:30 PM"
datetime_object = parser.parse(date_string)
print(datetime_object)

معالجة الأخطاء المتينة

لفّ دائمًا strptime في كتلة try-except لمعالجة استثناءات ValueError المحتملة:


try:
    datetime_object = datetime.strptime(date_string, format)
except ValueError as e:
    print(f"خطأ في تحويل سلسلة التاريخ: {e}")

معالجة تنسيقات التواريخ والأوقات المتنوعة

للتنسيقات المدخلة المتنوعة، قد تحتاج إلى معالجة السلسلة مسبقًا أو استخدام التعبيرات النمطية لاستخراج مكونات التاريخ قبل تطبيق strptime أو dateutil.parser.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *