web-dev-qa-db-fra.com

Comment obtenir la date et l'heure actuelles uniquement dans Django?

Je suis tombé sur une situation intéressante en utilisant cette classe:

class Company(models.Model):
    date = models.DateField()
    time = models.TimeField()
c = Company(date=datetime.datetime.now(), time=datetime.datetime.now()) 

Django décide d'utiliser DATETIME_INPUT_FORMATS Défini dans le fichier formats.py. Ce qui a du sens, car je passe un datetime.now() aux deux champs.

Je pense que je pourrais faire Django utiliser respectivement DATE_INPUT_FORMATS Et TIME_INPUT_FORMATS Si je ne transmettais que la date et l'heure actuelles.

Quelque chose comme ça:

c = Company(date=datetime.date.now(), time=datetime.time.now()) 

Mais cela jette évidemment une exception, car il n’existe pas maintenant comme ça. Y a-t-il un moyen différent d'y parvenir?

76
Houman

Pour la date, vous pouvez utiliser datetime.date.today() ou datetime.datetime.now().date().

Pour le moment, vous pouvez utiliser datetime.datetime.now().time().


Cependant, pourquoi avoir des champs séparés pour ceux-ci en premier lieu? Pourquoi ne pas utiliser un seul DateTimeField?

Vous pouvez toujours définir des fonctions d'assistance sur le modèle qui renvoient le .date() ou .time() plus tard si vous ne voulez que l'une ou l'autre.

136
Amber
import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015

Pour le moment

from time import gmtime, strftime
showtime = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print showtime
2015-10-15 07:49:18
59
Abdul Razak
import datetime

datetime.date.today()  # Returns 2018-01-15

datetime.datetime.now() # Returns 2018-01-15 09:00
19
Ethan Brimhall