2011-09-07 10 views
8

मेरे पास स्ट्रिंग प्रारूप में टाइमज़ोन जानकारी के साथ एक टाइमस्टैम्प है और मैं इसे अपने स्थानीय टाइमज़ोन का उपयोग करके सही दिनांक/समय प्रदर्शित करने के लिए परिवर्तित करना चाहता हूं। तो उदाहरण के लिए ... मैंपायथन पायट्ज़ एक टाइमज़ैम्प से दूसरे समय में एक टाइमस्टैम्प (स्ट्रिंग प्रारूप) को परिवर्तित करना

timestamp1 = 2011-08-24 13:39:00 +0800 

है और मैं यह कहना समय क्षेत्र ऑफसेट +1000 dsiplay को pytz का उपयोग कर

timestamp2 = 2011-08-24 15:39:00 +1000 

मैंने कोशिश की है, लेकिन कई उदाहरण दिखा पाते हैं कैसे सके कन्वर्ट करने के लिए चाहते हैं ऑफ़सेट जानकारी का उपयोग करें। एक अन्य लिंक जिसे मैंने स्टैक ओवरफ्लो पर पाया जो इस सटीक समस्या को दर्शाता है here है। मैं उम्मीद कर रहा था कि कुछ बेहतर तरीका था जिसे मैं इसे pytz का उपयोग करके संभाल सकता था। अग्रिम में सभी सुझावों के लिए धन्यवाद :)।

अद्यतन

धन्यवाद Cixate। मुझे बस समाधान मिला जो आपके जैसा ही है। इन कड़ियों उपयोगी पाया - LINK1 और LINK2

समाधान पोस्ट कर रहा है हर किसी को लाभ के लिए एक बार आप एक datetime वस्तु है

from datetime import datetime 
import sys, os 
import pytz 
from dateutil.parser import parse 

datestr = "2011-09-09 13:20:00 +0800" 
dt = parse(datestr) 
print dt 
localtime = dt.astimezone (pytz.timezone('Australia/Melbourne')) 
print localtime.strftime ("%Y-%m-%d %H:%M:%S") 
2011-09-09 15:20:00 
+0

अपने चेकबॉक्स का चयन करके सही रूप Cixate के जवाब अंकन पर विचार करें। – wberry

उत्तर

9

datetime.astimezone अपने बुनियादी रूपांतरण करेंगे। आप एक स्ट्रिंग से एक datetime वस्तु प्राप्त करने की कोशिश कर रहे हैं, python-dateutil स्थापित पिप और यह रूप में सरल रूप में है: के बाद से अपने अंतिम समाधान Cixate के सुझाव के करीब है,

>>> from dateutil.parser import parse 
>>> from dateutil.tz import tzoffset 
>>> dt = parse('2011-08-24 13:39:00 +0800') 
datetime.datetime(2011, 8, 24, 13, 39, tzinfo=tzoffset(None, 28800)) 
>>> dt.astimezone(tzoffset(None, 3600)) 
datetime.datetime(2011, 8, 24, 6, 39, tzinfo=tzoffset(None, 3600)) 
+0

धन्यवाद सिक्सीट .. मुझे डेट्यूटिल.parser और datetime.astimezone का उपयोग करके समाधान मिला है। मेरा समाधान आपके लिए थोड़ा अलग है। मेरी अज्ञानता को क्षमा करें, लेकिन क्या आप "tzoffset (कोई नहीं, 3600)" – Angela

+0

का उपयोग करके टाइमज़ोन जानकारी को पुनर्प्राप्त करने के बारे में विस्तृत जानकारी दे सकते हैं। उदाहरण के लिए आप "+1000" के ऑफसेट में अनुवाद करना चाहते हैं, दुर्भाग्य से मैंने इसे "+0100" "लेकिन प्रिंसिपल वही है। Tzoffset() का पहला पैरामीटर एक नाम है, जो कि यदि आप इसे जानना नहीं चाहते हैं तो कोई भी नहीं हो सकता है। दूसरा सेकंड में यूटीसी से ऑफसेट है। तो 10 घंटे के लिए 1 घंटे या 36000 के लिए 3600। स्पष्टीकरण के लिए – six8

+0

धन्यवाद सिक्सीट। – Angela