Podczas korzystania z tej klasy natknąłem się na ciekawą sytuację:
class Company(models.Model):
date = models.DateField()
time = models.TimeField()
c = Company(date=datetime.datetime.now(), time=datetime.datetime.now())
Django decyduje się na użycie DATETIME_INPUT_FORMATS
zdefiniowanego w pliku functions.py . Co ma sens, ponieważ przechodzę datetime.now()
do obu pól.
Myślę, że mógłbym sprawić, by Django używał DATE_INPUT_FORMATS
i TIME_INPUT_FORMATS
odpowiednio, gdybym podał tylko aktualną datę i aktualny czas.
Coś takiego:
c = Company(date=datetime.date.now(), time=datetime.time.now())
Ale to oczywiście rzuca wyjątek, ponieważ teraz tak nie istnieje. Czy można to osiągnąć w inny sposób?
źródło
pytz
), kiedy przejdziesz do wyświetlenia czasu. Jest to nie tylko lepszy sposób przechowywania, ale także obsługa strefy czasowej za darmo, ponieważpytz
została już napisana dla Ciebie.import datetime datetime.datetime.now().strftime ("%Y%m%d") 20151015
Na czas
from time import gmtime, strftime showtime = strftime("%Y-%m-%d %H:%M:%S", gmtime()) print showtime 2015-10-15 07:49:18
źródło
import datetime datetime.date.today() # Returns 2018-01-15 datetime.datetime.now() # Returns 2018-01-15 09:00
źródło
import datetime
Bieżąca data i godzina
print(datetime.datetime.now()) #2019-09-08 09:12:12.473393
Tylko aktualna data
print(datetime.date.today()) #2019-09-08
Tylko w bieżącym roku
print(datetime.date.today().year) #2019
Tylko w bieżącym miesiącu
print(datetime.date.today().month) #9
Tylko bieżący dzień
print(datetime.date.today().day) #8
źródło
Inny sposób na uzyskanie daty i godziny UTC z milisekundami.
from datetime import datetime datetime.utcnow().isoformat(sep='T', timespec='milliseconds') + 'Z' 2020-10-29T14:46:37.655Z
źródło
Informacje pokrewne, do pytania ...
W django użyj
timezone.now()
dla pola datetime, ponieważ django obsługuje strefę czasową , po prostu zwraca datę i godzinę na podstawieUSE TZ
ustawień lub po prostu obiekty daty i godziny `` świadome '' strefy czasowejDla porównania mam
TIME_ZONE = 'Asia/Kolkata'
iUSE_TZ = True
,from django.utils import timezone import datetime print(timezone.now()) # The UTC time print(timezone.localtime()) # timezone specified time, print(datetime.datetime.now()) # default local time # output 2020-12-11 09:13:32.430605+00:00 2020-12-11 14:43:32.430605+05:30 # IST is UTC+5:30 2020-12-11 14:43:32.510659
Więcej informacji można znaleźć w ustawieniach strefy czasowej oraz umiędzynarodowieniu i lokalizacji w dokumentacji django.
źródło