¿Cómo convierto datetime a date (en Python)?

646

¿Cómo convierto un datetime.datetimeobjeto (p. Ej., El valor de retorno de datetime.datetime.now())a un datetime.dateobjeto en Python?

niklasfi
fuente
16
Si solo necesita esto datetime.datetime.now(), tenga en cuenta que hay un método datetime.date.today().
Thierry J.
si ya ha importado fecha y hora, por ejemplo from datetime import datetime, simplemente puede agregar la fechafrom datetime import datetime, date
Josh

Respuestas:

985

Usa el date()método:

datetime.datetime.now().date()
ars
fuente
14
Para entrar en UTC, que puede ser muy útil -> datetime.datetime.utcnow()y en consecuenciadatetime.datetime.utcnow().date()
Nick Brady
2
Gracias @SeanColombo, la fecha actual en una zona horaria particular debería serdatetime.datetime.now(pytz.timezone('US/Pacific')).date()
Mónica Para CEO
62

Usas el datetime.datetime.date()método:

datetime.datetime.now().date()

Obviamente, la expresión anterior puede (y en mi humilde opinión :) debe escribirse como:

datetime.date.today()
tzot
fuente
14
No confundas al chico.
fiatjaf
1
para ser justos, esta respuesta (usando .today()) es la más pitónica para la pregunta de ejemplo indicada.
Dannid
2
Si usa hoy, tenga cuidado al comparar una fecha. today()tiene un componente de hora también. así que si lo hace: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')y entonces if losdat < datetime.datetime.today():siempre será cierto porque losdattendrá un componente de tiempo de medianoche que caerá antes de la marca de tiempo detoday()
Dennis Decoene
3
@DennisDecoene: ¿por qué usar en datetime.datetime.today()lugar de datetime.date.today(), cuando uno quiere un datetime.dateobjeto?
tzot
@tzot Sí, eso también era lo que quería señalar, pero no estaba claro.
Dennis Decoene
45

Puede convertir un objeto datetime en una fecha con el método date () del objeto date time, de la siguiente manera:

<datetime_object>.date()
Furbeenator
fuente
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()
Serenidad
fuente
2
¿Querías publicar esta respuesta aquí? Me parece que su respuesta está dirigida a una pregunta diferente.
Todos los trabajadores son esenciales
2

puede ingresar este formulario de código para (fecha de hoy y nombres del día y hora) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

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

e ingrese este código para ( fecha de hoy simplemente) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

por objeto: 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
fuente
OP quería obtener un datetime.dateobjeto, y no una cadena, que strftimedevolvería (ref: docs.python.org/3/library/datetime.html#datetime.date.strftime ).
Grzegorz Skibinski