88 votes

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

J'ai rencontré 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 cadre de la formats.py dossier. Ce qui est logique, car je transmets un fichier datetime.now() dans les deux champs.

Je pense que je pourrais faire en sorte que Django utilise DATE_INPUT_FORMATS y TIME_INPUT_FORMATS respectivement, si je ne passais que la date et l'heure actuelles dans.

Voici ce qu'il en est :

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

Mais cela crée évidemment une exception, car now n'existe pas de cette manière. Existe-t-il un autre moyen d'y parvenir ?

163voto

Amber Points 159296

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

Pour l'heure, vous pouvez utiliser datetime.datetime.now().time() .


Cependant, pourquoi avoir des champs distincts pour ces éléments ? Pourquoi ne pas utiliser un seul champ DateTimeField ?

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

68voto

Abdul Razak Points 2094
import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015

Pour l'instant

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

34voto

Ethan Brimhall Points 325
import datetime

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

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

13voto

Akshay Chandran Points 151

Une info liée à la question...

Dans django, utilisez timezone.now() pour le champ datetime, car django prend en charge fuseau horaire il renvoie simplement une date basée sur la valeur USE TZ ou simplement des objets datetime "conscients" du fuseau horaire.

À titre de référence, j'ai TIME_ZONE = 'Asia/Kolkata' y USE_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

renvoyer paramètres du fuseau horaire y Internationalisation et localisation dans la documentation de django pour plus de détails.

10voto

Timma Points 98
 import datetime

Date et heure actuelles

     print(datetime.datetime.now())
     #2019-09-08 09:12:12.473393

Date du jour uniquement

     print(datetime.date.today())
     #2019-09-08

Année en cours uniquement

     print(datetime.date.today().year)
     #2019

Mois en cours uniquement

     print(datetime.date.today().month)
     #9

Le jour même uniquement

     print(datetime.date.today().day)
     #8

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X