كيفية تحويل String إلى Datetime في Python

يعد التحويل من نوع واحد من البيانات إلى نوع آخر من البيانات أمرًا بالغ الأهمية في أي لغة برمجة. تدعم جميع لغات البرمجة تقريبًا تحويلات النوع لأنواع البيانات المضمنة.

تحتاج أنواع البيانات المخصصة مثل التاريخ والوقت إلى وحدات نمطية إضافية للتحويلات. نحتاج إلى وحدات ، خاصة لتحويلات التاريخ والوقت لأن العمل عليها لم يكن سهلاً على المبرمجين. لحسن الحظ ، يحتوي Python على وحدات مدمجة للعمل مع التاريخ والوقت.

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

لماذا نحتاج إلى تحويل سلسلة التاريخ والوقت إلى كائن التاريخ والوقت؟

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

لنفترض أنه يتعين علينا مقارنة تاريخين. إذا كانت بتنسيق سلسلة ، يمكننا مقارنتها بشكل صحيح. إذا كانت بتنسيق datetime ، فيمكننا استخدام عوامل المقارنة مثل الأرقام.

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

  فرز تطبيقات الخوارزميات في بايثون

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

باستخدام التاريخ والوقت

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

يحتوي datetime.datetime على العديد من الطرق. نحن مهتمون بطريقة strptime التي ستساعدنا في التحويل. دعنا نتحقق من ذلك.

التاريخ والوقت

يتم استخدام أسلوب datetime.strptime لتحويل سلسلة التاريخ والوقت إلى كائن تاريخ / وقت. يتطلب سلسلتين ، أحدهما عبارة عن سلسلة تاريخ / وقت والآخر هو تنسيق سلسلة التاريخ والوقت. وتقوم بإرجاع كائن التاريخ والوقت.

دعونا نرى مثالا

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

إذا قمت بتشغيل الكود أعلاه ، فسترى الإخراج التالي.

2022-12-19 21:37:56

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

لقد استخدمنا بعض رموز التنسيق لتنسيق التاريخ والوقت. يمكنك الرجوع إلى جميع رموز التنسيق في المستندات.

ترجع طريقة datetime.strptime التاريخ والوقت الكامل. إذا كنت ترغب في الحصول على التاريخ والوقت بشكل منفصل ، فيمكننا استخدام أساليب التاريخ والوقت لكائن التاريخ والوقت. دعنا نرى الكود.

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## getting date separately
print("Date:", datetime.strptime(string, formatting).date())

## getting time separately
print("Time:", datetime.strptime(string, formatting).time())

قم بتشغيل الكود أعلاه وسترى الإخراج التالي.

Date: 2022-12-19
Time: 21:37:56

سيعود تاريخ ووقت الأساليب كائناتها على التوالي. سيكون لديهم مرة أخرى طرقهم الخاصة للتواريخ والأوقات.

  كيف يمكنني العثور على إصدار وهندسة خادم IBM HTTP المثبت؟

لقد قدمنا ​​السلاسل والتنسيقات الصحيحة لطريقة datetime.strptime التي رأيناها أعلاه. إذا لم نقدمها بشكل صحيح ، فسنحصل على أخطاء. دعونا نرى كيفية التعامل مع هذه الأخطاء. قم بتشغيل التعليمات البرمجية التالية.

from datetime import datetime

string = "19:12:2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"
print(datetime.strptime(string, formatting))

سيظهر خطأ في الكود أعلاه لأن التنسيق لا يتطابق مع سلسلة التاريخ والوقت. للتعامل مع هذه الأنواع من الأخطاء ، يمكننا استخدام Pythons ‘try-except. دعونا نضيفها.

from datetime import datetime

try:
    string = "19:12:2022 09:37:56 PM"
    formatting = "%d-%m-%Y %I:%M:%S %p"
    print(datetime.strptime(string, formatting))
except ValueError as error:
    print(error)

الآن ، قم بتشغيل الكود مرة أخرى. سترى رسالة الخطأ التالية دون كسر الكود.

time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

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

هذا كل شيء لوحدة التاريخ والوقت. دعنا ننتقل إلى تاريخ الوحدة التالي.

استخدام داتوتيل

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

pip install python-dateutil

الطريقة التي نهتم بها هي dateutil.parser.parse. دعونا نرى كيفية تحويل سلسلة التاريخ والوقت إلى كائن التاريخ والوقت.

محلل

يأخذ الأسلوب parser.parse سلسلة تاريخ / وقت ويحولها إلى تنسيق كائن تاريخ / وقت. لا نحتاج إلى تقديم أي تنسيق لهذه الطريقة. سيقوم تلقائيًا بتحويل سلسلة التاريخ والوقت المحددة إلى كائن التاريخ والوقت. دعونا نرى مثالا.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print(parser.parse(string))

إذا قمت بتشغيل الكود أعلاه ، فسترى الإخراج التالي.

2022-12-19 21:37:56

يجب أن تكون سلسلة التاريخ والوقت بتنسيق معين يقبله أسلوب parser.parse. سيظهر خطأ إذا لم يكن تنسيق سلسلة التاريخ والوقت وفقًا للتنسيق المطلوب. يمكنك التحقق من جميع تنسيقات سلاسل التاريخ والوقت التي تقبلها للتحويلات التلقائية.

  11 من أفضل برامج إدارة المشاريع مفتوحة المصدر [Self-hosted]

نظرًا لأن طريقة parser.parse تُرجع كائن التاريخ والوقت ، يمكننا الوصول إلى كائنات التاريخ والوقت بشكل منفصل كما رأينا في وحدة التاريخ والوقت. دعنا نرى الكود.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Date:", parser.parse(string).date())
print("Time:", parser.parse(string).time())

يمكنك رؤية الإخراج أدناه إذا قمت بتشغيل الكود أعلاه.

Date: 2022-12-19
Time: 21:37:56

كما ترون dateutil يجعل من السهل التعامل مع التواريخ والأوقات نسبيًا. يمكنك استكشاف الوحدة في المستندات.

استنتاج

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

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

يمكنك أيضًا استكشاف كيفية حساب فرق التوقيت في بيثون.

ترميز سعيد 🙂