التابع 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 Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.