Existe um método interno para converter um date
em um datetime
em Python, por exemplo, obter datetime
a meia-noite da data especificada? A conversão oposta é fácil: datetime
tem um .date()
método.
Eu realmente preciso ligar manualmente datetime(d.year, d.month, d.day)
?
.datetime()
método; o que é bobo é que eles não têm esse método.datetime.from_date()
construtor.Respostas:
Você pode usar
datetime.combine(date, time)
; durante o tempo, você cria umdatetime.time
objeto inicializado para meia-noite.fonte
datetime.combine(d, time())
time.time
ou qualquer outra coisa que não seja umdatetime.time
.Existem várias maneiras, embora eu acredite que a que você menciona (e não gosta) é a mais legível.
e assim por diante - mas basicamente todos eles dependem da extração apropriada de informações do
date
objeto e da sua devolução ao ctor ou função de classe adequadadatetime
.fonte
datetime(d.year, d.month, d.day)
parece muito mais legível do que a resposta aceitadatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
parece mais limpo (sugerido por@
larham1 )datetime(d.year, d.month, d.day)
mais óbvio (um datetime sem o componente time). É um ponto menor, porém, e usar um nome de variável como "meia-noite" torna óbvio qual é o resultado, mesmo que o leitor não saiba o quedatetime.time.min
representa.datetime(d.year, d.mont, d.day)
não é apenas mais óbvio, é também mais rápido .A resposta aceita está correta, mas eu preferiria evitar usar
datetime.min.time()
porque não é óbvio para mim exatamente o que faz. Se é óbvio para você, mais poder para você. Eu também sinto o mesmo sobre otimetuple
método e a confiança no pedido.Na minha opinião, a maneira mais legível e explícita de fazer isso sem depender do leitor para estar muito familiarizado com a
datetime
API do módulo é:Essa é a minha opinião sobre "explícito é melhor do que implícito".
fonte
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
função on-liner desta resposta.datetime
estar ciente do fuso horário. Nesse caso, você podeimport pytz
e, em seguidatzinfo=pytz.timezone('Europe/London')
, adicionar , por exemplo.Você pode usar o
date.timetuple()
método e descompactar o operador*
.fonte
datetime.combine
através da resposta do @ kiamlaluno. Eu acho que é bastante pitônico, especialmente considerando que a construção de umdatetime.time
objeto provavelmente se parece com algodatetime.time(*map(int,"H:M:S".split(":")))
assim ...Hoje sendo 2016, acho que a solução mais limpa é fornecida pelos pandas Timestamp:
O registro de data e hora é o equivalente dos pandas à data e hora e é intercambiável com ele na maioria dos casos. Verifica:
Mas, se você realmente quer um data e hora de baunilha, ainda pode:
Os registros de data e hora são muito mais poderosos do que as datas, entre outros quando se lida com fusos horários. Na verdade, os carimbos de data e hora são tão poderosos que é uma pena que sejam tão mal documentados ...
fonte
Uma maneira de converter de data para data e hora que ainda não foi mencionada:
fonte
Você pode usar easy_date para facilitar:
fonte
Se você precisar de algo rápido,
datetime_object.date()
fornece uma data para um objeto datetime.fonte
date
paradatetime
.datetime
tem um.date()
método. , ênfase em negrito minha.Eu sou um novato em Python. Mas esse código funcionou para mim, que converte a entrada especificada que forneço para data e hora. Aqui está o código. Corrija-me se eu estiver errado.
fonte
datetime.date()
objeto, não uma sequência .