2011-09-18 12 views
7

मैं एक आवश्यकता फिर वापस स्थानीय समय स्टाम्प को यूटीसी के लिए एक स्थानीय समय स्टाम्प से एक तिथि कन्वर्ट करना होगा।मुद्दा फिर वापस

अजीब, जब यूटीसी अजगर से स्थानीय करने के लिए वापस परिवर्तित यह मूल पीएसटी के बजाय पीडीटी है, इसलिए पद परिवर्तित तारीख एक घंटे प्राप्त की है का फैसला किया। किसी ने मुझे बता सकते हैं क्या हो रहा है या मैं गलत क्या कर रहा हूँ?

from datetime import datetime 
from pytz import timezone 
import pytz 

DATE_FORMAT = '%Y-%m-%d %H:%M:%S %Z%z' 

def print_formatted(dt): 
    formatted_date = dt.strftime(DATE_FORMAT) 
    print "%s :: %s" % (dt.tzinfo, formatted_date) 


#convert the strings to date/time 
date = datetime.now() 
print_formatted(date) 

#get the user's timezone from the pofile table 
users_timezone = timezone("US/Pacific") 

#set the parsed date's timezone 
date = date.replace(tzinfo=users_timezone) 
date = date.astimezone(users_timezone) 
print_formatted(date) 

#Create a UTC timezone 
utc_timezone = timezone('UTC') 
date = date.astimezone(utc_timezone) 
print_formatted(date) 

#Convert it back to the user's local timezone 
date = date.astimezone(users_timezone) 
print_formatted(date) 

और यहाँ आउटपुट है:

None :: 2011-09-18 18:24:23 
US/Pacific :: 2011-09-18 18:24:23 PST-0800 
UTC :: 2011-09-19 02:24:23 UTC+0000 
US/Pacific :: 2011-09-18 19:24:23 PDT-0700 

उत्तर

6

बदलें

date = date.replace(tzinfo=users_timezone) 

को
date = users_timezone.localize(date) 

localize डेलाइट सेविंग टाइम के लिए समायोजित कर देता है, replace n करता है OT। अधिक जानकारी के लिए the docs देखें।

+0

धन्यवाद है कि यह तय हो गई। – user578888