¿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?


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()

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()

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()

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
¿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()


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.