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.