الفرق بين المراجعتين لصفحة: «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> المحوّلة ويؤخذ اسم المنطقة الزمنية ومقدار إزاحتها عن التوقيت العالمي المنسّق من نظام التشغيل. | |||
إن كانت قيمة <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>. | |||
==القيمة المعادة== | |||
يعيد التابع كائن <code>datetime</code> مع خاصية <code>tzinfo</code> الممرّرة كمعامل للتابع، ويَجري تعديل بيانات الوقت والتاريخ بحيث تكون النتيجة مشابهة لوقت الكائن نفسه حسب التوقيت العالمي المنسّق، ولكنّ بالتوقيت المحلّي المحدّد بالمعامل <code>tz</code>. | |||
يمكن ربط كائن منطقة زمنية <code>tz</code> بكائن <code>datetime</code> (نفترض أنّ اسمه <code>dt</code>) دون إجراء التعديلات على بيانات الوقت والتاريخ باستخدام التعبير <code>dt.replace(tzinfo=tz)</code>. ويمكن حذف كائن المنطقة الزمنية من كائن <code>datetime</code> واعٍ دون تحويل بيانات الوقت والتاريخ، باستخدام التعبير <code>dt.replace(tzinfo=None)</code>. | |||
يمكن | من الجدير بالذكر أنّه يمكن إعادة تعريف (override) التابع الافتراضي <code>tzinfo.fromutc()</code> في صنف <code>tzinfo</code> الفرعي للتأثير على النتيجة المعادة من التابع <code>astimezone()</code>. | ||
من | '''ملاحظات:''' | ||
*في الإصدار 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: | |||
return self | |||
# تحويل الكائن نفسه إلى UTC، وإلحاق كائن المنطقة الزمنية الجديد. | |||
utc = (self - self.utcoffset()).replace(tzinfo=tz) | |||
# التحويل من UTC إلى المنطة الزمنية tz. | # التحويل من UTC إلى المنطة الزمنية tz. | ||
return tz.fromutc(utc) | |||
</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)