الفرق بين المراجعتين لصفحة: «Python/datetime/datetime»
احمد-نورالله (نقاش | مساهمات) ط عنونة بقيّة "خصائص نسخة الصنف datetime" |
|||
سطر 37: | سطر 37: | ||
'''ملاحظة:''' هذه الخصائص للقراءة فقط. | '''ملاحظة:''' هذه الخصائص للقراءة فقط. | ||
<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 لأسباب سياسية). | ||
مراجعة 21:56، 6 يوليو 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) |
- يمثّل كائن
datetime2
المدّة الزمنيةtimedelta
المحذوفة من الكائنdatetime1
، وذلك بالتقدم في الزمن إن كانتtimedelta.days > 0
، أو الرجوع بالزمن إن كانتtimedelta.days < 0
. تمتلك نتيجة هذه العملية خاصيةtzinfo
ذاتها التي تمتلكها المدخلات، وبعد إجراء هذه العملية يصبحdatetime2 - datetime1 == timedelta
. تطلق اللغة الخطأOverflowError
إن كانdatetime2.year
أصغر منMINYEAR
أو أكبر منMAXYEAR
. وجدير بالذكر أنّه لن تجرى أيّة تعديلات على المنطقة الزمنية حتى إن كانت المدخلات كائنات واعية. - تحسب هذه العملية قيمة
datetime2
بحيث يكونdatetime2 + timedelta == datetime1
. كما هو الحال في عملية الجمع فإنّ النتيجة تمتلك خاصيةtzinfo
ذاتها التي تمتلكها المدخلات، ولا تجرى أيّة تعديلات على المنطقة الزمنية حتى لو كانت المدخلات كائنات واعية. - لا تتم عملية طرح كائن
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 أثناء إجراء العملية. - يكون الكائن
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()
انظر أيضًا
الصنف datetime.date
في بايثون.
الصنف datetime.time
في بايثون.