التعامل مع التواريخ في بايثون

التعامل مع التواريخ في بايثون

يشرح هذا المقال كيفية التعامل مع التواريخ في بايثون۔

YouTube Video

التعامل مع التواريخ في بايثون

يعتمد التعامل مع التواريخ في بايثون بشكل أساسي على وحدة datetime.۔ توفر هذه الوحدة العديد من الفصول والوظائف للتعامل مع التواريخ والأوقات.۔

فيما يلي بعض الأمثلة على التعامل الأساسي مع التواريخ باستخدام وحدة datetime

الحصول على التاريخ والوقت

يمكنك الحصول على التاريخ والوقت الحاليين كما يلي۔ datetime.now() و datetime.today() يعيدان تقريباً نفس النتيجة، لكن قد توجد اختلافات في كيفية تعاملهما مع المناطق الزمنية۔

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • يسترجع هذا الكود التاريخ والوقت الحاليين ويعرضهما، بالإضافة إلى تاريخ اليوم فقط۔

إنشاء تواريخ وأوقات محددة

يمكنك إنشاء تاريخ ووقت محددين كما يلي۔

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • ينشئ هذا الكود التاريخ والوقت المحددين (7 نوفمبر 2023، 10:30:45) ويعرضهما۔

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

يمكن تنسيق التاريخ كما يلي۔

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • يحصل هذا الكود على التاريخ والوقت الحاليين، ويقوم بتنسيقهما بالشكل المطلوب باستخدام strftime، ثم يعرضهما۔

سلاسل تنسيقات التاريخ

  • %Y: السنة (4 أرقام)
  • %m: الشهر (01 إلى 12)
  • %d: اليوم (01 إلى 31)
  • %H: الساعة (00 إلى 23)
  • %M: الدقيقة (00 إلى 59)
  • %S: الثانية (00 إلى 59)

تحليل سلاسل التاريخ

يمكنك تحويل سلسلة تمثل تاريخاً إلى كائن datetime۔

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • يقوم هذا الكود بتحويل تاريخ ممثل كسلسلة إلى كائن datetime باستخدام strptime() ويعرضه۔

الحسابات على التواريخ

يمكنك إجراء العمليات الحسابية على التواريخ كما يلي۔

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • يستخدم هذا الكود timedelta لإضافة أو طرح أيام وأوقات من التاريخ والوقت الحاليين، ويحسب ويعرض تاريخ ووقت الغد، وأسبوع مضى، وساعتين لاحقاً۔

إدارة المناطق الزمنية

يمكنك أيضاً إدارة المناطق الزمنية باستخدام وحدة datetime۔

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime يعيد بشكل افتراضي 'datetime naïve' (بدون معلومات عن المنطقة الزمنية)۔ يمكنك إدارة المناطق الزمنية بشكل صريح باستخدام الفئة timezone أو zoneinfo۔

فئة التاريخ وفئة الوقت

مع وحدة datetime، يمكنك إدارة التواريخ فقط أو الأوقات فقط كذلك۔

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • فئة date تتعامل مع التواريخ فقط، وفئة time تتعامل مع الأوقات فقط۔

التحويل بين datetime و timestamp

التحويل بين طوابع وقت UNIX وكائنات datetime ممكن۔ هنا، يشير طابع وقت UNIX إلى عدد الثواني المنقضية منذ 1 يناير 1970۔

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • يقوم هذا الكود بتحويل التاريخ والوقت الحاليين إلى طابع وقت UNIX، ثم يستخدم الدالة fromtimestamp() لتحويل هذا الطابع مرة أخرى إلى كائن datetime۔

أخطاء شائعة

عند استخدام وحدة datetime، يجب أن تكون على علم بالنقاط التالية۔

  • datetime.now() لا يأخذ المناطق الزمنية في الاعتبار، لذلك من أجل الدعم الدولي تحتاج إلى استخدام timezone.utc بشكل صريح۔
  • كن حذراً كي لا تخلط بين %m (شهر) و%M (دقيقة) في سلاسل تنسيق التاريخ۔

الملخص

تقدم وحدة datetime أيضًا العديد من الميزات الأخرى للتعامل المرن مع التواريخ والأوقات.۔ بالإضافة إلى ذلك، تتوفر فئات مثل date وtime وtimedelta، المتخصصة في عمليات محددة.۔

يسمح استخدام المكتبات الأخرى أيضًا بالتعامل المتقدم مع التواريخ.۔ على سبيل المثال، تتخصص مكتبة pandas في التعامل مع بيانات السلاسل الزمنية، بينما تناسب dateutil تحليل التواريخ المعقد.۔ أيضًا، مكتبة arrow مفيدة أيضًا۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video