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

نشرت: 2022-12-20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 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 . إذا لم يتطابقوا ، فقد تحصل على خطأ أو ناتج غير صحيح.

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

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

 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

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

لقد قدمنا ​​السلاسل والتنسيقات الصحيحة لطريقة 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))

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

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

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

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

 pip install python-dateutil

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

محلل

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

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

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

 2022-12-19 21:37:56

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

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

 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 إلى كائن التاريخ والوقت. هناك وحدة نمطية أخرى مدمجة تسمى time والتي يمكننا من خلالها تحويل سلسلة datetime إلى كائن DateTime مشابه لوحدات datetime و dateutil . جربها بنفسك. لن يكون الأمر صعبًا كما فعلت بالفعل شيئًا مشابهًا مع الوحدات النمطية الأخرى.

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

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

ترميز سعيد