التعامل مع التواريخ في بايثون
يشرح هذا المقال كيفية التعامل مع التواريخ في بايثون۔
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 أيضًا.۔