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?

niklasfi
la source
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()
ars
la source
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
132

De la documentation:

datetime.datetime.date()

Objet de date de retour avec les mêmes année, mois et jour.

Peter Mortensen
la source
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()
tzot
la source
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()
Furbeenator
la source
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()
Sérénité
la source
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()

kamran26
la source
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