के साथ डेटाटाइम स्थानीयकरण मैं एक आरएसएस फ़ीड पार्स करने की कोशिश कर रहा हूं। फ़ीड में प्रविष्टियों की तरह तारीख तत्व:पायथन/django
<dc:date>2016-09-21T16:00:00+02:00</dc:date>
feedparser का उपयोग करना, मैं करने की कोशिश:
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
लेकिन समस्या यह है कि मैं डेटाबेस में संग्रहीत गलत समय हो रही हो रहे है। इस विशेष मामले में, दिनांक संग्रहीत किया जाता है के रूप में:
2016-09-21 13:00:00
... जब मैं 14:00 उम्मीद करेंगे - सही UTC समय।
मुझे लगता है समस्या हमारे Django सेटिंग्स, जहां हमारे पास में है:
TIME_ZONE = 'Europe/Berlin'
क्योंकि जब मैं करने के लिए स्विच:
TIME_ZONE = 'UTC'
... datatime सही UTC समय के रूप में संग्रहीत किया जाता है:
2016-09-21 14:00:00
वहाँ Django सेटिंग्स रखने के लिए के रूप में वे कर रहे हैं, लेकिन पार्स और इस datetime ग स्टोर करने के लिए कोई तरीका है सही ढंग से, django टाइमज़ोन सेटिंग को प्रभावित करने के बिना?
संपादित करें: शायद यह इस तरह और अधिक स्पष्ट है ...
print entry.published_parsed
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
print published_time
localized_time = pytz.timezone(settings.TIME_ZONE).localize(published_time, is_dst=None)
print localized_time
time.struct_time(tm_year=2016, tm_mon=9, tm_mday=21, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=265, tm_isdst=0)
2016-09-21 15:00:00
2016-09-21 15:00:00+02:00
क्या आप समय क्षेत्र रूपांतरण में रुचि रखते हैं या आप डेटाटाइम के साथ बस एक घंटा जोड़ने के लिए खुले रहेंगे।timedelta ऑपरेशन? – JwM
आखिरकार, मैं यूटीसी में सही समय लेना चाहता हूं। अब एक घंटा दूर लेना (दिन की बचत अवधि में दो घंटे) जाने का एक तरीका हो सकता है। मैंने अभी तक इसे नहीं देखा है। मैं सोच रहा था कि क्या कोई और तरीका था। मैंने उदाहरण के लिए timzone.activate() और timezone.deactivate() की कोशिश की जो कि वर्तमान_टाइज़ोन को सही तरीके से बदलना प्रतीत होता था, लेकिन इससे समस्या ठीक नहीं हुई। – apiljic
आप समय-समय पर जागरूक कर सकते हैं, या टाइमज़ोन बदल सकते हैं यदि यह पहले से ही जागरूक है लेकिन गलत है। –