2012-05-28 14 views
27

मैं से निपटने के एक सा डेलाइट सेविंग से उलझन में हूँDjango 1.4 timezone.now() datetime.datetime.now बनाम()

settings.py:

TIME_ZONE = 'Europe/London' 
USE_TZ = True 
Django खोल में

:

>>> from django.utils import timezone 
>>> import datetime 
>>> print timezone.now() 
2012-05-28 11:19:42.897000+00:00 
>>> print timezone.make_aware(datetime.datetime.now(),timezone.get_default_timez 
one()) 
2012-05-28 12:20:03.224000+01:00 

वे डेलाइट बचत के संबंध में क्यों नहीं हैं? दोनों को स्थानीय अवगत होना चाहिए, नहीं?

मैंने दस्तावेज़ पढ़ लिए हैं लेकिन कोई भी बुद्धिमान नहीं हूं।

उत्तर

43

timezone.now() के अनुसार:

def now(): 
    """ 
    Returns an aware or naive datetime.datetime, depending on settings.USE_TZ. 
    """ 
    if settings.USE_TZ: 
     # timeit shows that datetime.now(tz=utc) is 24% slower 
     return datetime.utcnow().replace(tzinfo=utc) 
    else: 
     return datetime.now() 

यह अपने डिफ़ॉल्ट समय क्षेत्र के बजाय utc पर आधारित है। आप

now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone()) 
print now.astimezone(timezone.utc) 
+15

का उपयोग कर एक ही मूल्य प्राप्त कर सकते हैं जो कुछ हद तक प्रतिद्वंद्वी है। मैंने टाइमज़ोन ग्रहण किया था। अब() मुझे डिफ़ॉल्ट टाइमज़ोन में दिया होगा! मेरी राय में बहुत पागल नहीं है। .astimezone() का उपयोग करके मेरी समस्या ठीक हो गई है, धन्यवाद। – meepmeep

+0

जब मैं निम्नलिखित करता हूं तो मुझे त्रुटि क्यों मिलती है: >>> आयात डेटाटाइम >>> django.utils से आयात करें टाइमज़ोन >>> polls.models आयात से प्रश्न >>> # pub_date के साथ एक प्रश्न उदाहरण बनाएं भविष्य में 30 दिन >>> भविष्य_क्वेशन = प्रश्न (pub_date = timezone.now() + datetime.timedelta (दिन = 30)) >>> # क्या हाल ही में प्रकाशित किया गया था? >>> future_question.was_published_recently() सच – pitchblack408

+0

>>> future_question.was_published_recently() Traceback (सबसे हाल कॉल पिछले): फ़ाइल "", लाइन 1, में फ़ाइल "C: \ Users \ michmar3 \ कार्यक्षेत्र \ pollsite \ चुनाव \ models.py ", रेखा 17, was_p में ublished_recently वापसी self.pub_date> = datetime.datetime.now() - datetime.timedelta (दिन = 1) फ़ाइल" C: \ jython2। 7b2 \ Lib \ datetime.py ", लाइन 1727, __ge__ में स्वयं को वापस करें .__ cmp (अन्य)> = 0 फ़ाइल" सी: \ jython2.7b2 \ Lib \ datetime.py ", लाइन 1765, _datetime__cmp टाइप टाइपर बढ़ाएं ("बेवकूफ की तुलना नहीं कर सकते हैं और जागरूक डेटाटाइम ") टाइप एरर: बेवकूफ और जागरूक डेटाटाइम्स की तुलना नहीं कर सकते – pitchblack408

संबंधित मुद्दे