توفر بايثون أدوات قوية للعمل مع التواريخ والأوقات. غالبًا ما ستحتاج إلى تحويل سلاسل التواريخ والأوقات إلى كائنات datetime
لتسهيل التلاعب بها وتحليلها. تستعرض هذه المقالة طرقًا مختلفة لتحقيق هذا التحويل، مع التركيز على المرونة ومعالجة الأخطاء.
محتويات
- استخدام
datetime.strptime()
- طرق تحويل بديلة
- معالجة الأخطاء المتينة
- معالجة تنسيقات التواريخ والأوقات المتنوعة
استخدام datetime.strptime()
تُعد دالة datetime.strptime()
خيارًا شائعًا لتحويل السلسلة إلى datetime
. تأخذ حُجتين:
date_string
: السلسلة التي تحتوي على معلومات التاريخ و/أو الوقت.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
.