تقنية

parsedate_to_datetime في بايثون: لماذا يختلف -0000 عن +0000؟

الإزاحة -0000 تعيد tzinfo None والإزاحة +0000 تعيد UTC
معلومات المنطقة في الناتج. [1] [2]

إشارة الصفر تغير معلومات المنطقة في الكائن الناتج. [1] [2]

الخلاصة السريعة

الناتجان يختلفان في tzinfo. [1] [2]

  • تعيد الدالة كائن datetime. [1] [2]
  • مع -0000 يكون tzinfo مساويًا None. [1] [2]
  • مع +0000 يكون tzinfo هو UTC. [1] [2]
  • في تاريخ بريد مطابق للمواصفات، -0000 يعني UTC مع جهل منطقة المصدر. [1] [2]
  • اختبرنا 3.12.14 بتاريخ مؤلف، لا رسالة فعلية. [1] [2]

المثال

from email.utils import parsedate_to_datetime as p
for z in ['-0000','+0000']:
 d=p('01 Jan 2024 03:04:05 '+z)
 print(d.tzinfo)

[1] [2]

المخرجان None ثم UTC. [1] [2]

ماذا تعني None هنا؟

إذا ورد -0000 بهذه الصيغة، فغياب tzinfo لا يحول المعنى تلقائيًا إلى ساعة محلية. الكائن بلا معلومات منطقة؛ منطقة المصدر الأصلية غير معلومة. [1] [2]

الكائن مع -0000 بلا منطقة ومع +0000 ذو منطقة
نوعا datetime. [1] [2]

حدود التجربة

نقارن الصيغتين؛ لم نرسل بريدًا أو نتحقق من وقوع حدث في الوقت المكتوب. [1] [2]

المراجع

  1. Python: email.utils.parsedate_to_datetime
  2. CPython 3.12.14: email/utils.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.