التابع datetime.time()
في بايثون
يستدعى هذا التابع عند استخدام التابع datetime.astimezone()
بالطريقة الافتراضية. وعند استدعائه من هناك، يكون dt.tzinfo
هو الكائن نفسه self
، ويُنظر إلى بيانات التاريخ والوقت في الكائن dt
على أنّها تعرض الوقت حسب التوقيت العالمي المنسّق.
البنية العامة
tzinfo.fromutc(dt)
الهدف من التابع formutc()
هو تعديل بيانات الوقت والتاريخ وإعادة كائن datetime
مكافئ حسب التوقيت المحليّ للكائن نفسه self
.
يجب على الأصناف الفرعية من tzinfo
أن تكون قادرةً على وراثة طريقة الاستخدام الافتراضية للتابع fromutc()
دون أي مشاكل، وذلك لأنّ هذا التابع قادرٌ على التعامل مع حالات مثل المناطق الزمنية ذات مقدار الإزاحة الثابتة، والمناطق الزمنية التي تعتمد التوقيتين المعياري والصيفي، أو التوقيت الصيفي حتى عندما تكون أوقات الانتقال في النظام الصيفي مختلفة من سنة إلى أخرى.
ولكن قد لا يمكن للطريقة الافتراضية في استخدام التابع fromutc()
أن تتعامل مع بعض الحالات على نحو صحيح، فمثلًا عندما لا يعتمد مقدار الإزاحة المعياري عن التوقيت العالمي المنسّق على تاريخ أو وقت معين، وهو أمر قد يحدث لأسباب سياسية. ما يحدث هنا هو أنّه قد لا تعطي الطريقة الافتراضية لاستخدام التابعين astimezone()
و fromutc()
النتائج المطلوبة إن كانت النتيجة هي ساعة تكون ضمن اللحظة التي يحدث بها تغير في مقدار الإزاحة المعياري.
أمثلة
لو تجاوزنا الحالات التي تنشأ عنها الأخطاء فإنّ الطريقة الافتراضية لاستخدام التابع fromutc()
هي:
def fromutc(self, dt):
# يطلق الخطأ ValueError إن لم يكن dt.tzinfo هو self
dtoff = dt.utcoffset()
dtdst = dt.dst()
# يطلق الخطأ ValueError إن لم يكن dtoff هو None أو لم يكن dtdst هو None
delta = dtoff - dtdst # هذا هو مقدار الإزاحة المعياري للكائن نفسه
if delta:
dt += delta # التحويل إلى التوقيت المحلي المعياري
dtdst = dt.dst()
# يطلق الخطأ ValueError إن كان dtdst يحمل القيمة None
if dtdst:
return dt + dtdst
else:
return dt
انظر أيضًا
- التابع
tzinfo.dst()
: يعيد التابع مقدار التعديل لنظام التوقيت الصيفي (DST).
- التابع
datetime.astimezone()
: يعيد التابع كائنdatetime
مع خاصيةtzinfo
الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعاملtz
.
مصادر
قسم tzinfo Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.