الفرق بين المراجعتين لصفحة: «Python/datetime/datetime»

من موسوعة حسوب
لا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 2: سطر 2:


كائن <code>datetime</code> هو كائن مفرد يتضمّن جميع المعلومات المرتبطة بكائني التاريخ <code>date</code> والوقت <code>time</code>. وكما هو الحال مع هذين الكائنين، فإنّ كائن <code>datetime</code> يفترض وجود التقويم الكريكوري والممتد في كلا الاتجاهين، ويفترض كذلك وجود ‎<code>3600*24</code> ثانية بالضبط في كل يوم.
كائن <code>datetime</code> هو كائن مفرد يتضمّن جميع المعلومات المرتبطة بكائني التاريخ <code>date</code> والوقت <code>time</code>. وكما هو الحال مع هذين الكائنين، فإنّ كائن <code>datetime</code> يفترض وجود التقويم الكريكوري والممتد في كلا الاتجاهين، ويفترض كذلك وجود ‎<code>3600*24</code> ثانية بالضبط في كل يوم.
 
==البنية العامة==
== البنية العامة ==
 
<syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
</syntaxhighlight>
</syntaxhighlight>
 
==المعاملات==
== المعاملات ==
المعاملات الثلاثة الأولى (<code>year, month, day</code>) (السنة والشهر واليوم) تكون مطلوبة عند إنشاء صنف <code>datetime</code>. يمكن للمعامل <code>tzinfo</code> أن يأخذ القيمة <code>None</code> أو نسخة من صنف <code>tzinfo</code> فرعي. أما بقية المعاملات فيمكن أن تكون أعدادًا صحيحة ضمن النطاقات التالية:
المعاملات الثلاثة الأولى (<code>year, month, day</code>) (السنة والشهر واليوم) تكون مطلوبة عند إنشاء صنف <code>datetime</code>. يمكن للمعامل <code>tzinfo</code> أن يأخذ القيمة <code>None</code> أو نسخة من صنف <code>tzinfo</code> فرعي. أما بقية المعاملات فيمكن أن تكون أعدادًا صحيحة ضمن النطاقات التالية:
* <code>‎MINYEAR <= year <= MAXYEAR‎</code>
*<code>‎MINYEAR <= year <= MAXYEAR‎</code>
* <code>‎1 <= month <= 12‎</code>
*<code>‎1 <= month <= 12‎</code>
* عدد الأيام في السنة والشهر المحدّدين ‎‎1 <= day <=‎
*عدد الأيام في السنة والشهر المحدّدين ‎‎1 <= day <=‎
* <code>‎0 <= hour < 24‎</code>
*<code>‎0 <= hour < 24‎</code>
* <code>‎0 <= minute < 60‎</code>
*<code>‎0 <= minute < 60‎</code>
* <code>‎0 <= second < 60‎</code>
*<code>‎0 <= second < 60‎</code>
* <code>‎0 <= microsecond < 1000000‎</code>
*<code>‎0 <= microsecond < 1000000‎</code>
* <code>‎fold in [0, 1]‎</code>
*<code>‎fold in [0, 1]‎</code>
تطلق اللغة الخطأ <code>ValueError</code>، إن تجاوزت قيمة المعامل المعطاة إحدى هذه النطاقات.  
تطلق اللغة الخطأ <code>ValueError</code>، إن تجاوزت قيمة المعامل المعطاة إحدى هذه النطاقات.


'''ملاحظة''': أضيف المعامل <code>fold</code> في الإصدار 3.6 من بايثون.
'''ملاحظة''': أضيف المعامل <code>fold</code> في الإصدار 3.6 من بايثون.
 
==خصائص الصنف <code>datetime</code>:==
== خصائص الصنف <code>datetime</code>: ==
===<code>date.min</code>===
 
=== <code>date.min</code> ===
أقدم تاريخ ووقت يمكن تمثيلهما. <code>datetime(MINYEAR, 1, 1, tzinfo=None)‎</code>.
أقدم تاريخ ووقت يمكن تمثيلهما. <code>datetime(MINYEAR, 1, 1, tzinfo=None)‎</code>.
 
===<code>date.max</code>===
=== <code>date.max</code> ===
أقصى تاريخ ووقت يمكن تمثيلهما <code>datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)‎</code>.
أقصى تاريخ ووقت يمكن تمثيلهما <code>datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)‎</code>.
 
===<code>date.resolution</code>===
=== <code>date.resolution</code> ===
أدنى فارق ممكن بين كائني <code>datetime</code> غير متساويين <code>timedelta(microseconds=1)‎</code>.
أدنى فارق ممكن بين كائني <code>datetime</code> غير متساويين <code>timedelta(microseconds=1)‎</code>.
 
==خصائص نسخة الصنف <code>datetime</code>:==
== خصائص نسخة الصنف <code>datetime</code>: ==
 
تمتلك النسخ التي تنشأ من الصنف <code>date</code> الخصائص التالية:
تمتلك النسخ التي تنشأ من الصنف <code>date</code> الخصائص التالية:
 
===<code>date.year</code>===
=== <code>date.year</code> ===
السنة، وتمتد من <code>MINYEAR</code> إلى <code>MAXYEAR</code> ضمنيًّا.
السنة، وتمتد من <code>MINYEAR</code> إلى <code>MAXYEAR</code> ضمنيًّا.
 
===<code>date.month</code>===
=== <code>date.month</code> ===
الشهر، ويمتد من 1 إلى 12 ضمنيًّا.
الشهر، ويمتد من 1 إلى 12 ضمنيًّا.
 
===<code>date.day</code>===
=== <code>date.day</code> ===
اليوم، ويمتد من 1 إلى عدد الأيام ضمن الشهر المعطى في السنة المعطاة.
اليوم، ويمتد من 1 إلى عدد الأيام ضمن الشهر المعطى في السنة المعطاة.


'''ملاحظة:''' هذه الخصائص للقراءة فقط.
'''ملاحظة:''' هذه الخصائص للقراءة فقط.


<code>time.hour</code>
=== <code>time.hour</code> ===
 
الساعة ضمن المدى <code>0</code> إلى <code>23</code>.
الساعة ضمن المدى <code>0</code> إلى <code>23</code>.


<code>time.minute</code>
=== <code>time.minute</code> ===
 
الدقيقة ضمن المدى <code>0</code> إلى <code>59</code>.
الدقيقة ضمن المدى <code>0</code> إلى <code>59</code>.


<code>time.second</code>
=== <code>time.second</code> ===
 
الثانية ضمن المدى <code>0</code> إلى <code>59</code>.
الثانية ضمن المدى <code>0</code> إلى <code>59</code>.


جزء من الثانية، ضمن المدى <code>0</code> إلى <code>999999</code>.
جزء من الثانية، ضمن المدى <code>0</code> إلى <code>999999</code>.


<code>time.tzinfo</code>
=== <code>time.tzinfo</code> ===
 
الكائن المُمرّر كقيمة للمعامل <code>tzinfo</code> في الدالة البانية للكائن <code>time</code>، أو القيمة <code>None</code> إن كانت قيمة المعامل <code>tzinfo</code> الممرّرة هي <code>None</code>.
الكائن المُمرّر كقيمة للمعامل <code>tzinfo</code> في الدالة البانية للكائن <code>time</code>، أو القيمة <code>None</code> إن كانت قيمة المعامل <code>tzinfo</code> الممرّرة هي <code>None</code>.


<code>time.fold</code>
=== <code>time.fold</code> ===
 
ضمن المدى <code>‎[0, 1]</code>‎. ويستخدم للتمييز بين أوقات الانقضاء الحقيقية wall times خلال فترة زمنية مكرّرة. (تحدث الفترة الزمنية المكرّرة عند تأخير الساعات في التوقيت الصيفي، أو عند إنقاص مقدار إزاحة منطقة معيّنة عن التوقيت العالمي المنسّق UTC لأسباب سياسية).
ضمن المدى <code>‎[0, 1]</code>‎. ويستخدم للتمييز بين أوقات الانقضاء الحقيقية wall times خلال فترة زمنية مكرّرة. (تحدث الفترة الزمنية المكرّرة عند تأخير الساعات في التوقيت الصيفي، أو عند إنقاص مقدار إزاحة منطقة معيّنة عن التوقيت العالمي المنسّق UTC لأسباب سياسية).


سطر 75: سطر 58:
'''ملاحظة''': هذه الخاصية جديدة في الإصدار 3.6.
'''ملاحظة''': هذه الخاصية جديدة في الإصدار 3.6.


يوضّح المثال التالي خصائص نسخة الصنف <code>time</code>:
يوضّح المثال التالي خصائص نسخة الصنف <code>time</code>:<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
>>> from datetime import datetime
>>> from datetime import datetime
>>> dt = datetime(2018, 7, 4, 12, 39, 33)
>>> dt = datetime(2018, 7, 4, 12, 39, 33)
سطر 98: سطر 79:


</syntaxhighlight>
</syntaxhighlight>
==عمليات الكائن datetime==
يقدّم كائن <code>datetime</code> العمليات التالية:
{| class="wikitable"
!العملية
!النتيجة
|-
|<code>datetime2 = datetime1 + timedelta</code>
|(1)
|-
|<code>datetime2 = datetime1 - timedelta</code>
|(2)
|-
|<code>timedelta = datetime1 - datetime2</code>
|(3)
|-
|<code>datetime1 < datetime2</code>
|مقارنة كائن datetime مع كائن datetime آخر (4)
|}
# يمثّل كائن <code>datetime2</code> المدّة الزمنية <code>timedelta</code> المحذوفة من الكائن <code>datetime1</code>، وذلك بالتقدم في الزمن إن كانت <code>timedelta.days > 0</code>، أو الرجوع بالزمن إن كانت <code>timedelta.days < 0</code>. تمتلك نتيجة هذه العملية خاصية <code>tzinfo</code> ذاتها التي تمتلكها المدخلات، وبعد إجراء هذه العملية يصبح <code>datetime2 - datetime1 == timedelta</code>.  تطلق اللغة الخطأ <code>OverflowError</code> إن كان <code>datetime2.year</code> أصغر من <code>MINYEAR</code> أو أكبر من <code>MAXYEAR</code>. وجدير بالذكر أنّه لن تجرى أيّة تعديلات على المنطقة الزمنية حتى إن كانت المدخلات كائنات واعية.
# تحسب هذه العملية قيمة <code>datetime2</code> بحيث يكون <code>datetime2 + timedelta == datetime1</code>. كما هو الحال في عملية الجمع فإنّ النتيجة تمتلك خاصية <code>tzinfo</code> ذاتها التي تمتلكها المدخلات، ولا تجرى أيّة تعديلات على المنطقة الزمنية حتى لو كانت المدخلات كائنات واعية.
# لا تتم عملية طرح كائن <code>datetime</code> من كائن <code>datetime</code> آخر إلا إذا كان كلاهما بسيطًا أو واعيًا. تطلق اللغة الخطأ <code>TypeError</code> إن كان أحد الكائنين بسيطًا والآخر واعيًا.  إن كان الكائنان كلاهما بسيطًا أو واعيًا ويمتلكها خاصية <code>tzinfo</code> ذاتها، فستتجاهل اللغة خاصية <code>tzinfo</code> وتكون النتيجة عبارة عن كائن <code>timedelta</code> (نفترض أنه <code>t</code>) بحيث يكون <code>datetime2 + t == datetime1</code>، ولن تُجرى أي تعديلات في المنطقة الزمنية في هذه الحالة.  إن كان الكائنان كلاهما واعيين ويمتلكان خصائص <code>tzinfo</code> مختلفة، فإن العملية <code>a-b</code> ستعمل كما لو حُوّل <code>a</code> و <code>b</code> في البداية إلى كائنات <code>datetime</code> بسيطة بتوقيت UTC. وتكون النتيجة <code>‎(a.replace(tzinfo=None) - a.utcoffset()) -(b.replace(tzinfo=None) - b.utcoffset())‎</code> باستثناء أنّه لن يحدث فيضان overflow أثناء إجراء العملية.
# يكون الكائن <code>datetime1</code> أصغر من <code>datetime2</code> عندما يسبق الكائن الأول الكائن الثاني في الوقت.  تطلق اللغة الخطأ <code>TypeError</code> إن جرت المقارنة بين كائن بسيط وآخر واعٍ، وعند إجراء مقارنات المساواة فإنّ الكائنات البسيطة لا تتساوى مع الكائنات الواعية على الإطلاق.  إن كان جانبا المقارنة واعيين ويمتلكان خاصية <code>tzinfo</code> ذاتها، فإنّ اللغة تتجاهل هذه الخاصية وتجري المقارنة حسب كائنات <code>datetime</code> الأساسية. أما في حال اختلاف خاصية tzinfo بين الكائنين يجري تعديل جانبي المقارنة بطرح مقدار إزاحة كل منهما عن التوقيت العالمي المنسّق (يُحسب مقدار الإزاحة باستخدام التابع <code>self.utcoffset()‎</code>).
'''ملاحظة''': لا تطلق عملية المقارنة بين كائن <code>datetime</code> بسيط وآخر واعٍ الخطأ <code>TypeError</code> في الإصدار 3.3.


== عمليات الكائن datetime ==
'''ملاحظة''': تُطلق اللغة الخطأ <code>TypeError</code> وذلك لمنع عملية المقارنة التي تُعقد بين أنواع مختلفة من التراجع fallback إلى عملية المقارنة الافتراضية والتي تُعقد حسب عنوان الكائن، وذلك عند إجراء المقارنة بين كائن datetime وكائن من نوع آخر مختلف، ولكن تعاد القيمة <code>NotImplemented</code> إن كان طرف المقارنة الآخر يمتلك الخاصية <code>timetuple()</code>‎. وبهذا تُمنح الأنواع الأخرى من كائنات date الفرصة لإجراء مقارنات بين أنواع مختلفة. إن لم يمتلك طرف المقارنة الآخر خاصية <code>timetuple()</code>‎ تطلق اللغة الخطأ <code>TypeError</code> إلا إذا جرت المقارنة باستخدام العاملين <code>==</code> و <code>‎!‎=</code>‎، حيث تعيد عملية المقارنة القيمتين <code>False</code> و <code>True</code> على التوالي.
 
== توابع الصنف <code>datetime</code> ==
 
=== التابع <code>datetime.today()‎</code> ===
 
=== التابع <code>datetime.now()‎</code> ===
 
=== التابع <code>datetime.utcnow()‎</code> ===
 
=== التابع <code>datetime.fromtimestamp()‎</code> ===
 
=== التابع <code>datetime.utcfromtimestamp()‎</code> ===
 
=== التابع <code>datetime.fromordinal()‎</code> ===
 
=== التابع <code>datetime.combine()</code> ===
 
=== التابع <code>datetime.fromisoformat()</code> ===
 
=== التابع <code>datetime.strptime()‎</code> ===
 
== توابع نسخ الصنف <code>datetime</code> ==
 
=== التابع <code>datetime.date()‎</code> ===
 
=== التابع <code>datetime.time()‎</code> ===
 
=== التابع <code>datetime.timetz()</code> ===
 
=== التابع <code>datetime.replace()‎</code> ===
 
=== التابع <code>datetime.astimezone()‎</code> ===
 
=== التابع <code>datetime.utcoffset()‎</code> ===
 
=== التابع <code>datetime.dst()‎</code> ===
 
=== التابع <code>datetime.tzname()‎</code> ===
 
=== التابع <code>datetime.timetuple()‎</code> ===
 
=== التابع <code>datetime.utctimetuple()‎</code> ===
 
=== التابع <code>datetime.toordinal()</code> ===
 
=== التابع <code>datetime.timepstamp()</code> ===
 
=== التابع <code>datetime.weekday()‎</code> ===
 
=== التابع <code>datetime.isoweekday()‎</code> ===
 
=== التابع <code>datetime.isocalendar()‎</code> ===
 
=== التابع <code>datetime.isoformat()‎</code> ===


=== التابع <code>datetime.__str__()‎</code> ===
يمكن استخدام كائنات <code>datetime</code> كمفاتيح في [[Python/dict/update|القواميس]]، وفي السياقات البوليانية، تعدّ جميع كائنات <code>datetime</code> صحيحة.


=== التابع <code>datetime.ctime()‎</code> ===
==توابع الصنف <code>datetime</code>==
===التابع <code>[[Python/datetime/datetime/today|datetime.today()]]‎</code>===
يعيد التابع الوقت والتاريخ حسب التوقيت المحلّي، مع إعطاء المعامل <code>tzinfo</code> القيمة <code>None</code>.


=== التابع <code>datetime.format()‎</code> ===
===التابع <code>[[Python/datetime/datetime/now|datetime.now()‎]]</code>===
يعيد التابع الوقت التاريخ الحاليين حسب الإعدادات المحليّة، مع إمكانية تحديد المنطقة الزمنية.


== انظر أيضًا ==
===التابع <code>[[Python/datetime/datetime/utcnow|datetime.utcnow()]]‎</code>===
يعيد التابع الوقت والتاريخ حسب التوقيت العالمي المنسّق، مع إعطاء <code>tzinfo</code> القيمة <code>None</code>.


== مصادر ==
===التابع <code>[[Python/datetime/datetime/fromtimestamp|datetime.fromtimestamp()‎]]</code>===
[https://docs.python.org/3/library/datetime.html#datetime-objects قسم datetime Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.]
===التابع <code>[[Python/datetime/datetime/utcfromtimestamp|datetime.utcfromtimestamp()‎]]</code>===
===التابع <code>[[Python/datetime/datetime/fromordinal|datetime.fromordinal()‎]]</code>===
===التابع <code>[[Python/datetime/datetime/combine|datetime.combine()‎]]</code>===
===التابع <code>[[Python/datetime/datetime/fromisoformat|datetime.fromisoformat()‎]]</code>===
===التابع <code>[[Python/datetime/datetime/strptime|datetime.strptime()‎]]</code>===
==توابع نسخ الصنف <code>datetime</code>==
===التابع <code>datetime.date()‎</code>===
===التابع <code>datetime.time()‎</code>===
===التابع <code>datetime.timetz()‎</code>===
===التابع <code>datetime.replace()‎</code>===
===التابع <code>datetime.astimezone()‎</code>===
===التابع <code>datetime.utcoffset()‎</code>===
===التابع <code>datetime.dst()‎</code>===
===التابع <code>datetime.tzname()‎</code>===
===التابع <code>datetime.timetuple()‎</code>===
===التابع <code>datetime.utctimetuple()‎</code>===
===التابع <code>datetime.toordinal()‎</code>===
===التابع <code>datetime.timepstamp()‎</code>===
===التابع <code>datetime.weekday()‎</code>===
===التابع <code>datetime.isoweekday()‎</code>===
===التابع <code>datetime.isocalendar()‎</code>===
===التابع <code>datetime.isoformat()‎</code>===
===التابع <code>datetime.__str__()‎</code>===
===التابع <code>datetime.ctime()‎</code>===
===التابع <code>datetime.format()‎</code>===
==انظر أيضًا==
* الصنف <code>[[Python/datetime/date|datetime.date]]</code> في بايثون.
* الصنف [[Python/datetime/time|<code>datetime.time</code>]] في بايثون.
* الصنف <code>[[Python/datetime/tzinfo|datetime.tzinfo]]</code> في بايثون.
* الصنف <code>[[Python/datetime/timezone|datetime.timezone]]</code> في بايثون.


==مصادر==
* <span> </span>[https://docs.python.org/3/library/datetime.html#datetime-objects قسم datetime Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.]
[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Modules]]
[[تصنيف:Python Modules]]
[[تصنيف:Python Methods]]

المراجعة الحالية بتاريخ 21:59، 10 يوليو 2018


كائن datetime هو كائن مفرد يتضمّن جميع المعلومات المرتبطة بكائني التاريخ date والوقت time. وكما هو الحال مع هذين الكائنين، فإنّ كائن datetime يفترض وجود التقويم الكريكوري والممتد في كلا الاتجاهين، ويفترض كذلك وجود ‎3600*24 ثانية بالضبط في كل يوم.

البنية العامة

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

المعاملات

المعاملات الثلاثة الأولى (year, month, day) (السنة والشهر واليوم) تكون مطلوبة عند إنشاء صنف datetime. يمكن للمعامل tzinfo أن يأخذ القيمة None أو نسخة من صنف tzinfo فرعي. أما بقية المعاملات فيمكن أن تكون أعدادًا صحيحة ضمن النطاقات التالية:

  • ‎MINYEAR <= year <= MAXYEAR‎
  • ‎1 <= month <= 12‎
  • عدد الأيام في السنة والشهر المحدّدين ‎‎1 <= day <=‎
  • ‎0 <= hour < 24‎
  • ‎0 <= minute < 60‎
  • ‎0 <= second < 60‎
  • ‎0 <= microsecond < 1000000‎
  • ‎fold in [0, 1]‎

تطلق اللغة الخطأ ValueError، إن تجاوزت قيمة المعامل المعطاة إحدى هذه النطاقات.

ملاحظة: أضيف المعامل fold في الإصدار 3.6 من بايثون.

خصائص الصنف datetime:

date.min

أقدم تاريخ ووقت يمكن تمثيلهما. datetime(MINYEAR, 1, 1, tzinfo=None)‎.

date.max

أقصى تاريخ ووقت يمكن تمثيلهما datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)‎.

date.resolution

أدنى فارق ممكن بين كائني datetime غير متساويين timedelta(microseconds=1)‎.

خصائص نسخة الصنف datetime:

تمتلك النسخ التي تنشأ من الصنف date الخصائص التالية:

date.year

السنة، وتمتد من MINYEAR إلى MAXYEAR ضمنيًّا.

date.month

الشهر، ويمتد من 1 إلى 12 ضمنيًّا.

date.day

اليوم، ويمتد من 1 إلى عدد الأيام ضمن الشهر المعطى في السنة المعطاة.

ملاحظة: هذه الخصائص للقراءة فقط.

time.hour

الساعة ضمن المدى 0 إلى 23.

time.minute

الدقيقة ضمن المدى 0 إلى 59.

time.second

الثانية ضمن المدى 0 إلى 59.

جزء من الثانية، ضمن المدى 0 إلى 999999.

time.tzinfo

الكائن المُمرّر كقيمة للمعامل tzinfo في الدالة البانية للكائن time، أو القيمة None إن كانت قيمة المعامل tzinfo الممرّرة هي None.

time.fold

ضمن المدى ‎[0, 1]‎. ويستخدم للتمييز بين أوقات الانقضاء الحقيقية wall times خلال فترة زمنية مكرّرة. (تحدث الفترة الزمنية المكرّرة عند تأخير الساعات في التوقيت الصيفي، أو عند إنقاص مقدار إزاحة منطقة معيّنة عن التوقيت العالمي المنسّق UTC لأسباب سياسية).

تمثل القيمة 0 التوقيت المتقدّم بين التوقيتين، والقيمة 1 التوقيت المتأخر بين التوقيتين ضمن نفس تمثيل وقت الانقضاء الحقيقي.

ملاحظة: هذه الخاصية جديدة في الإصدار 3.6.

يوضّح المثال التالي خصائص نسخة الصنف time:

>>> from datetime import datetime
>>> dt = datetime(2018, 7, 4, 12, 39, 33)
>>> dt
datetime.datetime(2018, 7, 4, 12, 39, 33)
>>> print(dt)
2018-07-04 12:39:33
>>> dt.year
2018
>>> dt.month
7
>>> dt.day
4
>>> dt.hour
12
>>> dt.minute
39
>>> dt.second
33

عمليات الكائن datetime

يقدّم كائن datetime العمليات التالية:

العملية النتيجة
datetime2 = datetime1 + timedelta (1)
datetime2 = datetime1 - timedelta (2)
timedelta = datetime1 - datetime2 (3)
datetime1 < datetime2 مقارنة كائن datetime مع كائن datetime آخر (4)
  1. يمثّل كائن datetime2 المدّة الزمنية timedelta المحذوفة من الكائن datetime1، وذلك بالتقدم في الزمن إن كانت timedelta.days > 0، أو الرجوع بالزمن إن كانت timedelta.days < 0. تمتلك نتيجة هذه العملية خاصية tzinfo ذاتها التي تمتلكها المدخلات، وبعد إجراء هذه العملية يصبح datetime2 - datetime1 == timedelta. تطلق اللغة الخطأ OverflowError إن كان datetime2.year أصغر من MINYEAR أو أكبر من MAXYEAR. وجدير بالذكر أنّه لن تجرى أيّة تعديلات على المنطقة الزمنية حتى إن كانت المدخلات كائنات واعية.
  2. تحسب هذه العملية قيمة datetime2 بحيث يكون datetime2 + timedelta == datetime1. كما هو الحال في عملية الجمع فإنّ النتيجة تمتلك خاصية tzinfo ذاتها التي تمتلكها المدخلات، ولا تجرى أيّة تعديلات على المنطقة الزمنية حتى لو كانت المدخلات كائنات واعية.
  3. لا تتم عملية طرح كائن datetime من كائن datetime آخر إلا إذا كان كلاهما بسيطًا أو واعيًا. تطلق اللغة الخطأ TypeError إن كان أحد الكائنين بسيطًا والآخر واعيًا. إن كان الكائنان كلاهما بسيطًا أو واعيًا ويمتلكها خاصية tzinfo ذاتها، فستتجاهل اللغة خاصية tzinfo وتكون النتيجة عبارة عن كائن timedelta (نفترض أنه t) بحيث يكون datetime2 + t == datetime1، ولن تُجرى أي تعديلات في المنطقة الزمنية في هذه الحالة. إن كان الكائنان كلاهما واعيين ويمتلكان خصائص tzinfo مختلفة، فإن العملية a-b ستعمل كما لو حُوّل a و b في البداية إلى كائنات datetime بسيطة بتوقيت UTC. وتكون النتيجة ‎(a.replace(tzinfo=None) - a.utcoffset()) -(b.replace(tzinfo=None) - b.utcoffset())‎ باستثناء أنّه لن يحدث فيضان overflow أثناء إجراء العملية.
  4. يكون الكائن datetime1 أصغر من datetime2 عندما يسبق الكائن الأول الكائن الثاني في الوقت. تطلق اللغة الخطأ TypeError إن جرت المقارنة بين كائن بسيط وآخر واعٍ، وعند إجراء مقارنات المساواة فإنّ الكائنات البسيطة لا تتساوى مع الكائنات الواعية على الإطلاق. إن كان جانبا المقارنة واعيين ويمتلكان خاصية tzinfo ذاتها، فإنّ اللغة تتجاهل هذه الخاصية وتجري المقارنة حسب كائنات datetime الأساسية. أما في حال اختلاف خاصية tzinfo بين الكائنين يجري تعديل جانبي المقارنة بطرح مقدار إزاحة كل منهما عن التوقيت العالمي المنسّق (يُحسب مقدار الإزاحة باستخدام التابع self.utcoffset()‎).

ملاحظة: لا تطلق عملية المقارنة بين كائن datetime بسيط وآخر واعٍ الخطأ TypeError في الإصدار 3.3.

ملاحظة: تُطلق اللغة الخطأ TypeError وذلك لمنع عملية المقارنة التي تُعقد بين أنواع مختلفة من التراجع fallback إلى عملية المقارنة الافتراضية والتي تُعقد حسب عنوان الكائن، وذلك عند إجراء المقارنة بين كائن datetime وكائن من نوع آخر مختلف، ولكن تعاد القيمة NotImplemented إن كان طرف المقارنة الآخر يمتلك الخاصية timetuple()‎. وبهذا تُمنح الأنواع الأخرى من كائنات date الفرصة لإجراء مقارنات بين أنواع مختلفة. إن لم يمتلك طرف المقارنة الآخر خاصية timetuple()‎ تطلق اللغة الخطأ TypeError إلا إذا جرت المقارنة باستخدام العاملين == و ‎!‎=‎، حيث تعيد عملية المقارنة القيمتين False و True على التوالي.

يمكن استخدام كائنات datetime كمفاتيح في القواميس، وفي السياقات البوليانية، تعدّ جميع كائنات datetime صحيحة.

توابع الصنف datetime

التابع datetime.today()

يعيد التابع الوقت والتاريخ حسب التوقيت المحلّي، مع إعطاء المعامل tzinfo القيمة None.

التابع datetime.now()‎

يعيد التابع الوقت التاريخ الحاليين حسب الإعدادات المحليّة، مع إمكانية تحديد المنطقة الزمنية.

التابع datetime.utcnow()

يعيد التابع الوقت والتاريخ حسب التوقيت العالمي المنسّق، مع إعطاء tzinfo القيمة None.

التابع datetime.fromtimestamp()‎

التابع datetime.utcfromtimestamp()‎

التابع datetime.fromordinal()‎

التابع datetime.combine()‎

التابع datetime.fromisoformat()‎

التابع datetime.strptime()‎

توابع نسخ الصنف datetime

التابع datetime.date()‎

التابع datetime.time()‎

التابع datetime.timetz()‎

التابع datetime.replace()‎

التابع datetime.astimezone()‎

التابع datetime.utcoffset()‎

التابع datetime.dst()‎

التابع datetime.tzname()‎

التابع datetime.timetuple()‎

التابع datetime.utctimetuple()‎

التابع datetime.toordinal()‎

التابع datetime.timepstamp()‎

التابع datetime.weekday()‎

التابع datetime.isoweekday()‎

التابع datetime.isocalendar()‎

التابع datetime.isoformat()‎

التابع datetime.__str__()‎

التابع datetime.ctime()‎

التابع datetime.format()‎

انظر أيضًا

مصادر