Comment convertir datetime en date (en Python)?


646

Comment convertir un datetime.datetimeobjet (par exemple, la valeur de retour de datetime.datetime.now())en un datetime.dateobjet en Python?


16
Si vous en avez juste besoin datetime.datetime.now(), veuillez noter qu'il existe une méthode datetime.date.today().
Thierry J.

si vous avez déjà importé datetime, par exemple, from datetime import datetimevous pouvez simplement ajouter une datefrom datetime import datetime, date
Josh

Réponses:


985

Utilisez la date()méthode:

datetime.datetime.now().date()

14
Pour entrer en UTC qui peut être très utile -> datetime.datetime.utcnow()et en conséquencedatetime.datetime.utcnow().date()
Nick Brady

2
Merci @SeanColombo, la date actuelle dans un fuseau horaire particulier devrait êtredatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica For CEO


62

Vous utilisez la datetime.datetime.date()méthode:

datetime.datetime.now().date()

De toute évidence, l'expression ci-dessus peut (et devrait à mon humble avis :) être écrite comme suit:

datetime.date.today()

14
ne confondez pas le gars.
fiatjaf

1
pour être juste, cette réponse (en utilisant .today()) est la plus pythonique pour l'exemple de question indiqué.
Dannid

2
Si vous utilisez aujourd'hui, soyez prudent lorsque vous comparez une date. today()a aussi une composante horaire . donc si vous le faites: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')et alors if losdat < datetime.datetime.today():ce sera toujours vrai car losdataura une composante horaire de minuit qui tombera avant l'horodatage detoday()
Dennis Decoene

3
@DennisDecoene: pourquoi utiliser datetime.datetime.today()au lieu de datetime.date.today(), quand on veut un datetime.dateobjet?
tzot

@tzot Oui, c'est aussi ce que je voulais souligner, mais ce n'était pas clair.
Dennis Decoene

45

Vous pouvez convertir un objet datetime en date avec la méthode date () de l'objet date time, comme suit:

<datetime_object>.date()

3
import time
import datetime

# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
  start = end - datetime.timedelta(days=numdays+1)
  end   = int(time.mktime(end.timetuple()))
  start = int(time.mktime(start.timetuple()))
  # 86400 s = 1 day
  return xrange(start, end, 86400)

# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
    print datetime.datetime.fromtimestamp(dt).date()

2
Vouliez-vous publier cette réponse ici? Il me semble que votre réponse est dirigée vers une autre question.
Tous les travailleurs sont essentiels

2

vous pouvez entrer ce formulaire de code pour (date d'aujourd'hui et noms du jour et de l'heure) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

'19 -09-09 lun 17:37:56 '

et entrez ce code pour ( date d'aujourd'hui simplement) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

pour objet: datetime.datetime.now().date() datetime.datetime.today().date() datetime.datetime.utcnow().date() datetime.datetime.today().time() datetime.datetime.utcnow().date() datetime.datetime.utcnow().time()


OP voulait obtenir un datetime.dateobjet, et non une chaîne, qui strftimeretournerait (réf: docs.python.org/3/library/datetime.html#datetime.date.strftime ).
Grzegorz Skibinski
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.