الفرق بين المراجعتين ل"Python/datetime/datetime/astimezone"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التابع <code>datetime.astimezone()‎</code> في بايثون}}</noinclude> == البنية العامة == <syntaxhighlight lang="py...')
 
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:التابع <code>datetime.astimezone()‎</code> في بايثون}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:التابع <code>datetime.astimezone()‎</code> في بايثون}}</noinclude>
  
 
+
يعيد التابع كائن <code>datetime</code> مع خاصية <code>tzinfo</code> الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل <code>tz</code>.
== البنية العامة ==
+
==البنية العامة==
 
 
 
<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
 
‎datetime.astimezone(tz=None)
 
‎datetime.astimezone(tz=None)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
==المعاملات==
  
== المعاملات ==
+
=== <code>tz</code> ===
 +
يجب أن يكون المعامل <code>tz</code> -في حال توفّره- نسخة من صنف <code>tzinfo</code> فرعي، ويجب أن لا يعيد تابعاه <code>utcoffset()‎</code> و <code>dst()</code>‎ القيمة <code>None</code>. إن كان الكائن نفسه بسيطًا، فإنّ اللغة تفترض أنّه يمثّل الوقت حسب المنطقة الزمنية الخاصة بنظام التشغيل.
  
== القيمة المعادة ==
+
في حال استدعاء التابع دون تحديد المعاملات (أو إن أخذ المعامل <code>tz</code> القيمة <code>None</code>) فإنّ اللغة ستفترض أنّ المنطقة الزمنية المطلوبة هي المنطقة الزمنية المحددة الخاصة بنظام التشغيل، وتعيّن نسخة من الكائن <code>timezone</code> إلى الخاصية <code>tzinfo</code> التابعة لنسخة الكائن <code>datetime</code> المحوّلة ويؤخذ اسم المنطقة الزمنية ومقدار إزاحتها عن التوقيت العالمي المنسّق من نظام التشغيل.
يعيد التابع كائن datetime مع خاصية tzinfo الممرّرة كمعامل للتابع، ويجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل tz.
 
  
يجب أن يكون المعامل tz -في حال توفّره- نسخة من صنف tzinfo فرعي، ويجب أن لا يعيد تابعاه utcoffset()‎ و dst()‎ القيمة None. إن كان الكائن نفسه بسيطًا، فإنّ اللغة تفترض أنّه يمثّل الوقت حسب المنطقة الزمنية الخاصة بنظام التشغيل.
+
إن كانت قيمة <code>self.tzinfo</code> هي <code>tz</code>، فإنّ التعبير <code>self.astimezone(tz)</code>‎ مساوٍ للكائن نفسه <code>self</code>، بمعنى أنّه لن تجرى أي تعديلات على التاريخ والوقت. وفيما عدا ذلك تكون النتيجة حسب التوقيت المحلي في المنطقة الزمنية <code>tz</code>، ويمثّل نفس الوقت (حسب التوقيت العالمي المنسّق) الذي يمثّله الكائن نفسه <code>self</code>: ونتيجة لذلك سيمتلك التعبير  <code>afterastz = dt.astimezone(tz), astz - astz.utcoffset()‎</code> نفس بيانات الوقت والتاريخ التي يمتلكها التعبير <code>dt- dt.utcoffset()</code>.
وفي حال استدعاء التابع دون تحديد المعاملات (أو إن أخذ المعامل tz القيمة None) فإنّ اللغة ستفترض أنّ المنطقة الزمنية المطلوبة هي المنطقة الزمنية المحددة الخاصة بنظام التشغيل، وتعيّن نسخة من الكائن timezone إلى الخاصية tzinfo التابعة لنسخة الكائن datetime المحوّلة ويؤخذ اسم المنطقة الزمنية ومقدار إزاحتها عن التوقيت العالمي المنسّق من نظام التشغيل.
+
==القيمة المعادة==
 +
يعيد التابع كائن <code>datetime</code> مع خاصية <code>tzinfo</code> الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل <code>tz</code>.
  
إن كانت قيمة self.tzinfo هي tz، فإنّ التعبير self.astimezone(tz)‎ مساوٍ للكائن نفسه self، بمعنى أنّه لن تجرى أي تعديلات على التاريخ والوقت. وفيما عدا ذلك تكون النتيجة حسب التوقيت المحلي في المنطقة الزمنية tz، ويمثّل نفس الوقت (حسب التوقيت العالمي المنسّق) الذي يمثّله الكائن نفسه self: ونتيجة لذلك سيمتلك التعبير
+
يمكن ربط كائن منطقة زمنية <code>tz</code> بكائن <code>datetime</code> (نفترض أنّ اسمه <code>dt</code>) دون إجراء التعديلات على بيانات الوقت والتاريخ باستخدام التعبير <code>dt.replace(tzinfo=tz)</code>‎. ويمكن حذف كائن المنطقة الزمنية من كائن <code>datetime</code> واعٍ دون تحويل بيانات الوقت والتاريخ، باستخدام التعبير <code>dt.replace(tzinfo=None)</code>‎.
afterastz = dt.astimezone(tz), astz - astz.utcoffset()
 
نفس بيانات الوقت والتاريخ التي يمتلكها التعبير dt- dt.utcoffset()‎.
 
  
يمكن ربط كائن منطقة زمنية tz بكائن datetime (نفترض أنّ اسمه dt) دون إجراء التعديلات على بيانات الوقت والتاريخ باستخدام التعبير dt.replace(tzinfo=tz)‎. ويمكن حذف كائن المنطقة الزمنية من كائن datetime واعٍ دون تحويل بيانات الوقت والتاريخ، باستخدام التعبير dt.replace(tzinfo=None)‎.
+
من الجدير بالذكر أنّه يمكن إعادة تعريف (override) التابع الافتراضي <code>tzinfo.fromutc()‎</code> في صنف <code>tzinfo</code> الفرعي للتأثير على النتيجة المعادة من التابع <code>astimezone()‎</code>.
  
من الجدير بالذكر أنّه يمكن إعادة تعريف (override) التابع الافتراضي tzinfo.fromutc()‎ في صنف tzinfo الفرعي للتأثير على النتيجة المعادة من التابع astimezone()‎. وبتجاهل الحالات التي تنتج عنها الأخطاء، فإنّ التابع astimezone()‎ يعمل بالصورة التالية:
+
'''ملاحظات:'''
 +
*في الإصدار 3.3 من اللغة أصبح بالإمكان حذف المعامل <code>tz</code>.
 +
*في الإصدار 3.6 من اللغة أصبح بالإمكان استدعاء التابع <code>astimezone()‎</code> على النسخ البسيطة والتي يفترض بها تمثيل النظام المحلّي الخاصّ بالنظام.
 +
==أمثلة==
 +
إن تجاهلنا الحالات التي تنتج عنها الأخطاء، فإنّ التابع <code>astimezone()‎</code> يعمل بالصورة التالية:<syntaxhighlight lang="python3">
 
def astimezone(self, tz):
 
def astimezone(self, tz):
    if self.tzinfo is tz:
+
  if self.tzinfo is tz:
        return self
+
      return self
# تحويل الكائن نفسه إلى UTC، وإلحاق كائن المنطقة الزمنية الجديد.
+
  # تحويل الكائن نفسه إلى UTC، وإلحاق كائن المنطقة الزمنية الجديد.
    utc = (self - self.utcoffset()).replace(tzinfo=tz)
+
  utc = (self - self.utcoffset()).replace(tzinfo=tz)
 
   # التحويل من UTC إلى المنطة الزمنية tz.  
 
   # التحويل من UTC إلى المنطة الزمنية tz.  
    return tz.fromutc(utc)
+
  return tz.fromutc(utc)
 
 
'''ملاحظات:'''
 
* في الإصدار 3.3 من اللغة أصبح بالإمكان حذف المعامل tz.
 
* في الإصدار 3.6 من اللغة أصبح بالإمكان استدعاء التابع astimezone()‎ على النسخ البسيطة والتي يفترض بها تمثيل النظام المحلّي الخاصّ بالنظام.
 
== أمثلة ==
 
 
 
يبين المثال التالي آلية عمل التابع:
 
 
 
<syntaxhighlight lang="python3">
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>
 
+
==مصادر==
== انظر أيضًا ==
+
* <span> </span>[https://docs.python.org/3/library/datetime.html#datetime.datetime.astimezone. قسم datetime Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.]
 
 
== مصادر ==
 
[https://docs.python.org/3/library/datetime.html#datetime.astimezone. قسم datetime Objects في صفحة Basic date and time types في توثيق بايثون الرسمي.]
 
  
 
[[تصنيف:Python]]
 
[[تصنيف:Python]]
 
[[تصنيف:Python Modules]]
 
[[تصنيف:Python Modules]]
 
[[تصنيف:Python Methods]]
 
[[تصنيف:Python Methods]]

المراجعة الحالية بتاريخ 22:20، 7 يوليو 2018


يعيد التابع كائن datetime مع خاصية tzinfo الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل tz.

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

datetime.astimezone(tz=None)

المعاملات

tz

يجب أن يكون المعامل tz -في حال توفّره- نسخة من صنف tzinfo فرعي، ويجب أن لا يعيد تابعاه utcoffset()‎ و dst()‎ القيمة None. إن كان الكائن نفسه بسيطًا، فإنّ اللغة تفترض أنّه يمثّل الوقت حسب المنطقة الزمنية الخاصة بنظام التشغيل.

في حال استدعاء التابع دون تحديد المعاملات (أو إن أخذ المعامل tz القيمة None) فإنّ اللغة ستفترض أنّ المنطقة الزمنية المطلوبة هي المنطقة الزمنية المحددة الخاصة بنظام التشغيل، وتعيّن نسخة من الكائن timezone إلى الخاصية tzinfo التابعة لنسخة الكائن datetime المحوّلة ويؤخذ اسم المنطقة الزمنية ومقدار إزاحتها عن التوقيت العالمي المنسّق من نظام التشغيل.

إن كانت قيمة self.tzinfo هي tz، فإنّ التعبير self.astimezone(tz)‎ مساوٍ للكائن نفسه self، بمعنى أنّه لن تجرى أي تعديلات على التاريخ والوقت. وفيما عدا ذلك تكون النتيجة حسب التوقيت المحلي في المنطقة الزمنية tz، ويمثّل نفس الوقت (حسب التوقيت العالمي المنسّق) الذي يمثّله الكائن نفسه self: ونتيجة لذلك سيمتلك التعبير afterastz = dt.astimezone(tz), astz - astz.utcoffset()‎ نفس بيانات الوقت والتاريخ التي يمتلكها التعبير dt- dt.utcoffset()‎.

القيمة المعادة

يعيد التابع كائن datetime مع خاصية tzinfo الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل tz.

يمكن ربط كائن منطقة زمنية tz بكائن datetime (نفترض أنّ اسمه dt) دون إجراء التعديلات على بيانات الوقت والتاريخ باستخدام التعبير dt.replace(tzinfo=tz)‎. ويمكن حذف كائن المنطقة الزمنية من كائن datetime واعٍ دون تحويل بيانات الوقت والتاريخ، باستخدام التعبير dt.replace(tzinfo=None)‎.

من الجدير بالذكر أنّه يمكن إعادة تعريف (override) التابع الافتراضي tzinfo.fromutc()‎ في صنف tzinfo الفرعي للتأثير على النتيجة المعادة من التابع astimezone()‎.

ملاحظات:

  • في الإصدار 3.3 من اللغة أصبح بالإمكان حذف المعامل tz.
  • في الإصدار 3.6 من اللغة أصبح بالإمكان استدعاء التابع astimezone()‎ على النسخ البسيطة والتي يفترض بها تمثيل النظام المحلّي الخاصّ بالنظام.

أمثلة

إن تجاهلنا الحالات التي تنتج عنها الأخطاء، فإنّ التابع astimezone()‎ يعمل بالصورة التالية:

def astimezone(self, tz):
   if self.tzinfo is tz:
       return self
   # تحويل الكائن نفسه إلى UTC، وإلحاق كائن المنطقة الزمنية الجديد.
   utc = (self - self.utcoffset()).replace(tzinfo=tz)
   # التحويل من UTC إلى المنطة الزمنية tz. 
   return tz.fromutc(utc)

مصادر