Python التاريخ والوقت والوقتDelta، Strftime(تنسيق) مع أمثلة

⚡ ملخص ذكي

Python تتعامل وحدة datetime، إلى جانب فئات التاريخ والوقت وفترة التغيير الزمني، مع التواريخ والأوقات والفترات الزمنية ككائنات. تقوم هذه الوحدة بتنسيق المخرجات باستخدام الدالة strftime()، وتحليل السلاسل النصية، وحساب اللحظات المستقبلية أو الماضية باستخدام حسابات فترة التغيير الزمني.

  • 🔘 خمسة فصول دراسية: تقوم وحدة datetime بتجميع فئات التاريخ والوقت وdatetime وtimedelta وtzinfo للعمل مع التاريخ والوقت.
  • ☑️ القيم الحالية: تُرجع الدالتان datetime.now() و date.today() التاريخ والوقت الحاليين، بما في ذلك رقم يوم الأسبوع.
  • تنسيق: تقوم الدالة strftime() بتحويل التاريخ والوقت إلى نص قابل للقراءة باستخدام رموز التحكم مثل %Y و %A و %H.
  • 🧪 تايم دلتا: يقيس كائن timedelta مدة زمنية ويتنبأ بالتواريخ المستقبلية أو الماضية من خلال الجمع والطرح.tracنشوئها.
  • 🛠️ توجيهات: تستخدم نفس رموز التحكم الدالة strftime() للإخراج والدالة strptime() لقراءة سلسلة نصية وتحويلها إلى تاريخ ووقت.
  • 🤖 سير عمل الذكاء الاصطناعي: تستخلص مسارات التعلم الآلي ميزات التاريخ والوقت مثل يوم الأسبوع والساعة لنماذج السلاسل الزمنية.

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

In Python, التاريخ والوقت والوقت توفر الفئات عددًا من الدوال للتعامل مع التواريخ والأوقات والفترات الزمنية. التاريخ والتاريخ والوقت في Python هي كائنات، لذا عند التعامل معها، فأنت تتعامل فعليًا مع كائنات وليس مع سلاسل نصية أو طوابع زمنية. عند التعامل مع التواريخ أو الأوقات، يجب استيراد وحدة datetime.

فئات التاريخ والوقت في Python يتم تصنيفها إلى 5 فئات رئيسية.

  • التاريخ - التعامل مع التاريخ فقط (الشهر واليوم والسنة)
  • الوقت - الوقت المستقل عن اليوم (ساعة، دقيقة، ثانية، ميكروثانية)
  • datetime - مزيج من الوقت والتاريخ (الشهر، اليوم، السنة، الساعة، الثانية، ميكروثانية)
  • timedelta—مدة زمنية تُستخدم للتلاعب بالتواريخ
  • tzinfo— An abstracفئة t للتعامل مع المناطق الزمنية

كيفية استخدام فئة التاريخ والوقت

الخطوة 1:) قبل تشغيل التعليمات البرمجية لتنسيق التاريخ والوقت في Python، فمن المهم أن تقوم باستيراد ملف Python وحدات التاريخ والوقت كما هو موضح في لقطة الشاشة أدناه.

استخدم فئة التاريخ والوقت

تعد عبارات الاستيراد هذه بمثابة أجزاء محددة مسبقًا من الوظائف في ملف Python مكتبة تتيح لك التلاعب بالتواريخ والأوقات، دون كتابة أي كود.

ضع في اعتبارك النقاط التالية قبل تنفيذ الأمر Python كود تنسيق التاريخ

from datetime import date

هذا الخط يحكي Python مترجم لاستيراد فئة التاريخ من وحدة التاريخ والوقت في Pythonنحن لا نكتب الكود الخاص بوظيفة التاريخ هذه، بل نقوم ببساطة باستيرادها لاستخدامنا.

طباعة التاريخ باستخدام date.today()

تتضمن الدالة date.today() عدة خصائص مرتبطة بها. يمكننا طباعة اليوم/الشهر/السنة بشكل فردي، بالإضافة إلى العديد من المعلومات الأخرى.

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

طباعة التاريخ باستخدام date.today()

رقم اليوم الاسبوعي

تُعطيك الدالة date.today() أيضًا رقم يوم الأسبوع. إليك جدول أيام الأسبوع الذي يبدأ بـ Monday كـ 0 ويوم الأحد كـ 6.

يوم رقم أيام الأسبوع
Monday 0
الثلاثاء 1
الأربعاء 2
الخميس 3
الجمعة 4
السبت 5
الأحد 6

يُعد رقم أيام الأسبوع مفيدًا للصفائف التي يعتمد فهرسها على يوم الأسبوع.

طباعة التاريخ باستخدام date.today()

الخطوة 2:) بعد ذلك، نقوم بإنشاء مثيل لكائن التاريخ.

استخدم فئة التاريخ والوقت

الخطوة 3:) بعد ذلك، نقوم بطباعة التاريخ وتشغيل الكود.

استخدم فئة التاريخ والوقت

النتيجة كما هو متوقع.

Python التاريخ والوقت الحالي: الآن () اليوم ()

الخطوة 1) مثل كائنات التاريخ، يمكننا أيضًا استخدامها "كائنات التاريخ والوقت" in Python. Python كائنات التاريخ والوقت تعطي التاريخ مع الوقت الساعات والدقائق والثواني والملي ثانية.

Python التاريخ والوقت الحاليان

عندما نقوم بتنفيذ التعليمات البرمجية للتاريخ والوقت، فإنه يعطي الإخراج بالتاريخ والوقت الحاليين.

الخطوة 2) باستخدام "كائن التاريخ والوقت"، يمكنك أيضًا استدعاء فئة الوقت. لنفترض أننا نريد طباعة الوقت الحالي فقط دون التاريخ.

t = datetime.time(datetime.now())
  • لقد استوردنا فئة الوقت. سنقوم بتعيين القيمة الحالية للوقت باستخدام datetime.now()
  • نقوم بتعيين قيمة الوقت الحالي للمتغير t.

وهذا سوف يعطيني الوقت فقط. لذلك دعونا تشغيل هذا البرنامج.

Python التاريخ والوقت الحاليان

حسناً، كما ترون، هنا لدي التاريخ والوقت. وفي السطر التالي، لدي الوقت فقط.

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

  • يُعيّن عامل أيام الأسبوع (wd) رقمًا من 0 إلى 6 بناءً على يوم الأسبوع الحالي. هنا قمنا بتعريف مصفوفة قائمة الأيام (الاثنين، الثلاثاء، الأربعاء، ... الأحد).
  • استخدم قيمة الفهرس هذه لمعرفة اليوم الذي نحن فيه. في حالتنا، هو رقم 2، وهو يمثل الأربعاء، لذا في المخرجات سيتم طباعة "وهو يوم الأربعاء".

Python التاريخ والوقت الحاليان

إليك الكود الكامل للحصول على التاريخ والوقت الحاليين باستخدام datetime now

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

كيفية تنسيق إخراج التاريخ والوقت باستخدام Strftime()

حتى الآن، تعلمنا كيفية استخدام التاريخ والوقت والتاريخ الكائن في Python. سنتقدم خطوة أخرى ونتعلم كيفية استخدام وظيفة التنسيق لتنسيق الوقت والتاريخ.

الخطوة 1) أولاً سنرى خطوة بسيطة لكيفية تنسيق السنة. من الأفضل أن نفهم بمثال.

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

  • استخدمنا "دالة strftime" للتنسيق.
  • تستخدم هذه الوظيفة مختلفة رمز التحكم لإعطاء الإخراج.
  • كل رمز تحكم يمثل معايير مختلفة مثل السنة والشهر ويوم الأسبوع والتاريخ [(%y/%Y - السنة)، (%a/%A- يوم من أيام الأسبوع)، (%b/%B- شهر)، (%d - يوم من الشهر)] .
  • في حالتنا، هو عليه ("%ص") الذي يشبه السنة، فإنه يطبع السنة الكاملة مع القرن (على سبيل المثال، 2018).

الخطوة 2) الآن إذا استبدلت (“%Y”) بأحرف صغيرة، أي (“%y) وقمت بتنفيذ الكود، فسيتم عرض الإخراج (18) فقط وليس (2018). لن يتم عرض قرن العام كما هو موضح في لقطة الشاشة أدناه

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

الخطوة 3) تتيح دالة strf إمكانية تحديد التاريخ واليوم والشهر والسنة بشكل منفصل. كما يمكنك، بإجراء تعديلات بسيطة على كود التحكم في دالة strftime، تنسيق نمط النص.

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

داخل دالة strftime إذا قمت باستبدال (%a) بحرف A كبير، أي (%A) فسيتم طباعة الناتج على أنه "Friday" بدلاً من مجرد اختصار "Fri".

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

الخطوة 4) بمساعدة وظيفة "Strftime" يمكننا أيضًا استرداد وقت النظام المحلي أو التاريخ أو كليهما.

  1. %C- يشير إلى التاريخ والوقت المحلي
  2. %x- يشير إلى التاريخ المحلي
  3. %X- يشير إلى التوقيت المحلي

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

في الإخراج، يمكنك رؤية النتيجة كما هو متوقع

الخطوة 5) تتيح لك وظيفة "strftime" استدعاء الوقت بأي تنسيق 24 ساعة أو 12 ساعة.

تنسيق إخراج التاريخ والوقت باستخدام Strftime()

فقط من خلال تحديد رمز التحكم مثل %I/H للساعة، و% M للدقيقة، و%S للثانية، يمكن للمرء استدعاء الوقت بتنسيقات مختلفة

خلال 12 ساعة تم الإعلان عن الوقت [print now.strftime(“%I:%M:%S %p) ]

خلال 24 ساعة تم إعلان الوقت [print now.strftime("%H:%M")]

إليك الكود الكامل لتحويل التاريخ والوقت إلى كائن سلسلة.

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

ما هو Timedelta في Python?

دلتا زمنية في Python هو كائن يُمثل المدة الزمنية. يُستخدم بشكل أساسي لحساب المدة بين تاريخين ووقتين. كما يُستخدم لاسترجاع الكائن مع اختلاف زمني بين التاريخ والوقت. يدعم كائن timedelta العمليات الحسابية مثل الجمع والطرح.tracالعمليات الحسابية، الضرب، القسمة، إلخ.

كيفية استخدام كائنات Timedelta

مع Python باستخدام كائنات timedelta، يمكنك تقدير الوقت لكل من المستقبل والماضي. بمعنى آخر، إنها فترة زمنية للتنبؤ بأي يوم أو تاريخ أو وقت خاص.

تذكر أن هذه الوظيفة ليست لطباعة الوقت أو التاريخ، ولكنها شيء لحساب المستقبل أو الماضيلنرى Python مثال timedelta لفهمه بشكل أفضل.

الخطوة 1) لتشغيل كائنات Timedelta، تحتاج إلى إعلان بيان الاستيراد أولاً ثم تنفيذ الكود

  1. اكتب بيان الاستيراد لـ timedelta
  2. الآن اكتب الكود لطباعة الكائن من دلتا الوقت كما هو موضح في لقطة الشاشة
  3. قم بتشغيل الكود. يمثل timedelta فترة زمنية تبلغ 365 يومًا و8 ساعات و15 دقيقة ويطبع نفس القيمة

كائنات Timedelta

مربك؟ الخطوة التالية سوف تساعد-

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

كائنات Timedelta

الخطوة 3) سنرى كيف يمكننا استرجاع التاريخ بعد عام من الآن من خلال كائنات دلتا. عندما نقوم بتشغيل الكود، فإنه يعطي الناتج كما هو متوقع.

كائنات Timedelta

الخطوة 4) مثال آخر لكيفية استخدام دلتا الوقت لحساب التاريخ المستقبلي من التاريخ والوقت الحاليين

كائنات Timedelta

الخطوة 5) دعونا نلقي نظرة على مثال أكثر تعقيدًا. أود أن أحدد عدد الأيام التي مرت منذ بداية العام الجديد. إليك كيفية المضي قدمًا

  • باستخدام today= date.today() سنحصل على تاريخ اليوم
  • نحن نعلم أن العام الجديد يكون دائمًا في الأول من يناير، لكن العام قد يكون مختلفًا. باستخدام nyd= date(today.year,1) نقوم بتخزين العام الجديد في المتغير nyd
  • إذا كان تاريخ رأس السنة الجديدة أقل من تاريخ اليوم: يتم التحقق مما إذا كان التاريخ الحالي أكبر من تاريخ رأس السنة الجديدة. إذا كان كذلك، يتم الدخول في حلقة التكرار while.
  • ((today-nyd).days) يعطي الفرق بين التاريخ الحالي والعام الجديد بالأيام

كائنات Timedelta

يُظهر الإخراج أن "يوم رأس السنة الجديدة قد مر بالفعل منذ 11 يومًا."

هنا هو رمز العمل الكامل

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2 مثال

توضح الأمثلة التالية نفس عمليات التاريخ والوقت المكتوبة لـ Python ٢، حيث تكون الطباعة عبارة وليست دالة. استخدم هذه الإصدارات فقط عند صيانة الأنظمة القديمة. Python الرمز 2.

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

الأسئلة الشائعة

استخدم الدالة `datetime.strptime(text, format)` لتحويل سلسلة نصية إلى كائن تاريخ ووقت. مرر نفس التوجيهات التي تستخدمها الدالة `strftime()`، بحيث يُقرأ التاريخ "2018-06-29" بالصيغة "%Y-%m-%d". وعلى عكس الدالة `strftime()`، تُحوّل الدالة `strptime()` النص المقروء إلى تاريخ ووقت يمكنك استخدامه في العمليات الحسابية.

يُعدّ التاريخ والوقت بدون معلومات المنطقة الزمنية (tzinfo) غير دقيق؛ فإضافة معلومات المنطقة الزمنية تجعله دقيقًا. استخدم وحدة zoneinfo المدمجة (Python 3.9+) أو حزمة pytz لتحديد التواريخ والأوقات، ثم التحويل بين المناطق بحيث تظل الحسابات صحيحة عبر المناطق.

استخدم الدالة timestamp() على كائن التاريخ والوقت للحصول على عدد الثواني منذ بداية حقبة يونكس كقيمة عشرية، على سبيل المثال datetime.now().timestamp(). وللعكس، تستخدم الدالة datetime.fromtimestamp(value) لإعادة بناء كائن التاريخ والوقت من طابع زمني يونكس.

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

نعم. تأتي وحدة التاريخ والوقت مع Pythonلذا، لا حاجة لتثبيت pip. استورده باستخدام الأمر "from datetime import datetime, date, time, timedelta" وستصبح فئات التاريخ والوقت والتاريخ والوقت و tzinfo متاحة على الفور.

استدعِ الدالة isoformat() للحصول على سلسلة نصية قياسية بتنسيق ISO 8601، مثل "2018-06-29T08:15:27". أما بالنسبة لكائن التاريخ، فتُرجع الدالة التنسيق "YYYY-MM-DD". لا تتطلب الدالة isoformat() أي رموز تحكم، على عكس الدالة strftime() التي تُنشئ تنسيقات مخصصة من التوجيهات.

تحوّل مسارات التعلم الآلي الطوابع الزمنية الخام إلى خصائص مثل يوم الأسبوع، والساعة، والشهر، والوقت المنقضي باستخدام التاريخ والوقت والفرق الزمني. تساعد هذه الخصائص المُصممة للتاريخ نماذج السلاسل الزمنية وأنظمة التنبؤ بالذكاء الاصطناعي على اكتشاف الأنماط الموسمية والدورية.

نعم. يقوم مساعدو GitHub Copilot والذكاء الاصطناعي بإنشاء سلاسل تنسيق strftime()، وإجراء عمليات حسابية على timedelta، وتحويلات المناطق الزمنية من تعليق قصير، ويمكنهم شرح التوجيهات الغامضة. يُنصح دائمًا بتشغيل الكود المُقترح، لأن التعامل مع التاريخ والفروق الزمنية أمرٌ سهل الخطأ فيه.

تلخيص هذه التدوينة بـ: