Como converter data / hora em data (em Python)?


646

Como faço para converter um datetime.datetimeobjeto (por exemplo, o valor de retorno de datetime.datetime.now())um datetime.dateobjeto em Python?


16
Se você só precisa disso datetime.datetime.now(), observe que existe um método datetime.date.today().
— Thierry J.

Se você já importou datetime por exemplo from datetime import datetimevocê pode simplesmente adicionar a datafrom datetime import datetime, date
— Josh

Respostas:


984

Use o date()método:

datetime.datetime.now().date()

14
Para entrar em UTC, que pode ser muito útil -> datetime.datetime.utcnow()e, correspondentementedatetime.datetime.utcnow().date()
— Nick Brady

2
Obrigado @SeanColombo, a data atual em um fuso horário específico deve serdatetime.datetime.now(pytz.timezone('US/Pacific')).date()
— Monica Para CEO


62

Você usa o datetime.datetime.date()método:

datetime.datetime.now().date()

Obviamente, a expressão acima pode (e deve IMHO :) ser escrita como:

datetime.date.today()

14
não confunda o cara.
— Fiatjaf 13/08/2012

1
para ser justo, essa resposta (usando .today()) é a mais pitônica para a pergunta de exemplo declarada.
— Dannid

2
Se você usa hoje, tenha cuidado ao comparar uma data. today()tem um componente de hora também. por isso, se você faz: losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')e, em seguida, if losdat < datetime.datetime.today():será sempre verdade, porque losdatterá um componente de tempo de meia-noite que vai cair antes do timestamp detoday()
— Dennis Decoene

3
@DennisDecoene: por que usar em datetime.datetime.today()vez de datetime.date.today(), quando se quer um datetime.dateobjeto?
— tzot 29/03

@ tzot Sim, também era isso que eu queria destacar, mas não estava claro.
— Dennis Decoene

45

Você pode converter um objeto datetime em uma data com o método date () do objeto date time, da seguinte maneira:

<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
Você quis postar esta resposta aqui? Parece-me que sua resposta é direcionada para uma pergunta diferente.
— Todos os trabalhadores são essenciais

2

você pode inserir este formulário de código para (data atual e nomes do dia e hora) : datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')

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

e insira este código para ( data de hoje simplesmente) : datetime.date.today().strftime('%y-%m-%d') '19 -09-10 '

para 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 queria obter datetime.date objeto, e não a string, que strftimeretornaria (ref: docs.python.org/3/library/datetime.html#datetime.date.strftime ).
— Grzegorz Skibinski 10/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.