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?

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

Aus der Dokumentation:

datetime.datetime.date()

Rückgabe des Datumsobjekts mit demselben Jahr, Monat und Tag.

Peter Mortensen
quelle
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()
tzot
quelle
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()
Furbeenator
quelle
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()
Gelassenheit
quelle
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()

kamran26
quelle
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