python - لمصر - توقيت جرينتش



دجانغو داتيتيمفيلد المنطقة الزمنية علم سيت (1)

يستخدم دجانغو التوقيت أوتك داخليا. سيتم استخدام TIME_ZONE " ( https://docs.djangoproject.com/en/1.9/ref/settings/#std:setting-TIME_ZONE )

لقد بدأت مع 2016-01-11 00:00 CET ، وهو 2016-01-10 23:00 UTC ! تم حفظ داتيتيم بشكل صحيح إلى قاعدة البيانات واستعادة في وقت لاحق، لذلك كل شيء يعمل كما هو متوقع.

رأيت هذا المنصب هو دجانغو تفسد المنطقة الزمنية علم داتيتيمفيلد عند حفظه إلى قاعدة البيانات؟ ولكن على وجه التحديد يستخدم بيتس و ميسكل وما لا حيث أنا لا تستخدم بيتس واستخدام سكليت (طارئ قد يكون لها تأثير).

لدي النموذج التالي

class ScheduleItem(models.Model):
    work_date = models.DateTimeField('Work date')

وأدرج البيانات على النحو التالي:

from isoweek import Week
from dateutil import parser
from django.utils import timezone

def foo()
    year = 2016 #hardcoded for example purpose
    wknr = 2 #hardcoded for example purpose
    dateObj = parser.parse(Week(year, wknr).day(0).isoformat() + " 00:00:00")
    print(dateObj) # 2016-01-11 00:00:00 as expected
    final = timezone.make_aware(dateObj)
    print(final) # 2016-01-11 00:00:00+01:00 as expected
    return final


workdate = foo()
si = ScheduleItem(work_date=workdate)
si.save()

تعطيني البيانات المطبوعة الإخراج الصحيح، ولكن بمجرد أن أنظر في قاعدة البيانات (سكليت) أرى 2016-01-10 23:00:00

بلدي إعدادات جانغو يقول

TIME_ZONE = 'CET'
USE_TZ = True

استرداد البيانات التي أحصل عليها:

datetime.datetime(2016, 1, 10, 23, 0, tzinfo=<UTC>)

لماذا يتم تخزين البيانات في شكل آخر ثم أحدد ولماذا إذا تم تعيين دجانغو لتكون المنطقة الزمنية على علم هل أحصل على التوقيت العالمي المنسق التوقيت مرة أخرى؟ يعني قبل الإدراج كائن داتيتيم يقول: datetime.datetime(2016, 1, 11, 0, 0, tzinfo=<DstTzInfo 'CET' CET+1:00:00 STD>)

تحديث -

لقد وجدت العمل في الوقت نفسه من خلال وضع TIME_ZONE على قاعدة البيانات كما هو موضح في وثائق جانغو هنا . هذا يعطيني الوقت المناسب / التاريخ في قاعدة البيانات، ولكن وفقا لتلك الوثائق لا ينبغي أن تحتاج إليها لأن بلدي دب تدار من قبل جانغو

وهذا يسمح بالتفاعل مع قواعد بيانات الجهات الخارجية التي تقوم بتخزين البيانات في الوقت المحلي بدلا من التوقيت العالمي المنسق. لتجنب المشكلات حول التغييرات دست، يجب عدم تعيين هذا الخيار لقواعد البيانات التي تديرها جانغو.

لا يزال من غير الواضح بالنسبة لي لماذا دجانغو تحويل كائن داتيتيم مع سيت المنطقة الزمنية إلى أوتك عند تخزينه في قاعدة البيانات، ولكن ليست ذكية بما فيه الكفاية لتحويله مرة أخرى إلى سيت عند استرجاعها.