Wie konvertiere ich Datum / Uhrzeit in Datum (in Python)?


640

Wie konvertiere ich ein datetime.datetimeObjekt (z. B. den Rückgabewert von datetime.datetime.now())in ein datetime.dateObjekt in Python?


16
Wenn Sie dies nur benötigen datetime.datetime.now(), beachten Sie bitte, dass es eine Methode gibt datetime.date.today().
Thierry J.

Wenn Sie bereits datetime importiert haben from datetime import datetime, können Sie einfach Datum hinzufügenfrom datetime import datetime, date
Josh

Antworten:


981

Verwenden Sie die date()Methode:

datetime.datetime.now().date()

14
Um in UTC zu kommen, was sehr hilfreich sein kann -> datetime.datetime.utcnow()und entsprechenddatetime.datetime.utcnow().date()
Nick Brady

2
Danke @ SeanColombo, aktuelles Datum in einer bestimmten Zeitzone sollte seindatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Monica For CEO


62

Sie verwenden die datetime.datetime.date()Methode:

datetime.datetime.now().date()

Offensichtlich kann (und sollte IMHO :) der obige Ausdruck geschrieben werden als:

datetime.date.today()

14
Verwirre den Kerl nicht.
Fiatjaf

1
.today()Um fair zu sein, ist diese Antwort (mit ) die pythonischste für die angegebene Beispielfrage.
Dannid

2
Wenn Sie heute verwenden, seien Sie vorsichtig, wenn Sie ein Datum vergleichen. today()hat auch eine Stundenkomponente . Also, wenn Sie dies tun: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')und dann wird if losdat < datetime.datetime.today():es immer wahr sein, weil losdates eine today()
Zeitkomponente

3
@ TennisDecoene: Warum datetime.datetime.today()statt verwenden datetime.date.today(), wenn man ein datetime.dateObjekt will ?
Zot

@tzot Ja, das war auch das, worauf ich hinweisen wollte, aber es war unklar.
Dennis Decoene

45

Sie können ein datetime-Objekt mit der date () -Methode des date time-Objekts wie folgt in ein Datum konvertieren:

<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
Wollten Sie diese Antwort hier posten? Es sieht für mich so aus, als ob Ihre Antwort auf eine andere Frage gerichtet ist.
Alle Arbeiter sind wesentlich

2

Sie können dieses Codeformular eingeben für (heute Datum & Namen des Tages & Stunde) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

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

und geben Sie diesen Code ein für ( heutiges Datum einfach) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

für Objekt: 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 wollte ein datetime.dateObjekt und keine Zeichenfolge erhalten, die zurückgegeben werden strftimewürde ( siehe : docs.python.org/3/library/datetime.html#datetime.date.strftime ).
Grzegorz Skibinski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.