التابع datetime.time()‎ في بايثون

من موسوعة حسوب
< Python‏ | datetime‏ | tzinfo
اذهب إلى التنقل اذهب إلى البحث


يستدعى هذا التابع عند استخدام التابع 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 في توثيق بايثون الرسمي.