2014-11-15 7 views
8

Kiedy powinienem używać Django timezone.now() i kiedy powinienem używać pythong'a datetime.datetime.now().Timezone.now() vs datetime.datetime.now()

Na przykład w poniższej INSERT, które miałyby więcej sensu?

- Product.objects.create(title='Soap', date_added=datetime.datetime.now()) 
- Product.objects.create(title='Soap', date_added=timezone.now()) 

Czy istnieje pewna reguła dotycząca używania każdej z nich?

+1

[link jest przydatny?] (Http://stackoverflow.com/questions/10783864/django-1-4-timezone-now-vs-datetime-datetime-now) – helloV

Odpowiedz

10

Po prostu zawsze używaj timezone.now(). Django ma teraz obsługę stref czasowych, która wymaga "świadomych" obiektów datetime w strefie czasowej. datetime.now() zwróci obiekt naiwny o nazwie strefa czasowa, natomiast timezone.now() zwróci obiekt świadomy strefy czasowej.

+6

Dokładniej, 'timezone.now () 'zwróci naiwny lub świadomy' datetime' oparty na ustawieniu 'USE_TZ'. –

+0

Czy możesz wskazać mi źródło, w którym mógłbym dowiedzieć się więcej o każdym z nich? –

+1

Oczywiście: https://docs.djangoproject.com/en/1.9/topics/i18n/timezones/#naive-and-aware-datetime-objects – dgel