observe que as respostas mais votadas são para data / hora ingênuos em fuso horário, enquanto observamos que, no ambiente de produção, mais e mais serviços em todo o mundo estão conectados e data / hora com reconhecimento de fuso horário se tornam o padrão exigido
Seria bom se esta resposta abrangesse fusos horários (talvez o UTC como exemplo) e talvez iniciasse com time.time ().
precisa
4
@Toskan, o formato não fazia parte da pergunta, portanto não deve fazer parte da resposta. Já existe um link para mais documentação do módulo que contém coisas como formatação.
JiyuuSensei 18/10/19
Em qual versão do Python foi fornecida a resposta original? Apenas digitar datetime.datetime.now()no meu console interativo Python 2.7 (o IronPython ainda não foi atualizado) me dá o mesmo comportamento do exemplo mais recente usado print()na resposta. Não repliquei com êxito o que a resposta original mostra (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Não que eu realmente quero, o print () comportamento é o preferido, mas estou curioso.)
RTHarston
@BobVicktor: Python 2.7, 3.7 e 3.8 dão o mesmo comportamento para mim, não sei o que você está vendo.
Harley Holcombe
@HarleyHolcombe Hmm ... talvez seja uma coisa do IronPython? Quando eu digito datetime.now()em seu próprio imprime-lo para fora a mesma era como seus programas de resposta print(datetime.now())...
Tudo o que está pedindo é obter a hora atual, não exibi-la.
precisa saber é
@ppperry, basta atribuir uma variável à resposta de Ray - como: myTime = str (datetime.now ()) .
Lukas
2
Não é relevante; o passo "str" não está dentro do âmbito da pergunta
pppery
4
@pppery Nem o op diz que não se trata de conseguir uma sequência do tempo. O op não diz o que eles querem fazer com o tempo, então por que é ruim mostrar como transformá-lo em uma string? A maioria das respostas fala sobre obter uma sequência a partir do momento, então parece ser um caso de uso comum, então por que destacar a resposta de Ray? De que serve simplesmente aproveitar o tempo sem saber como fazer alguma coisa? Você pode imprimi-lo ou fazer contas nele, e apenas algumas respostas mostram como fazer contas, então acho que imprimir / obter uma string é um uso comum. ;-) (Eu sei que é para isso que eu vim.) #
RTHarston
1
O fato de esta resposta ter mais de 440 votos positivos sugere que a adição menor do método string foi útil para muitas pessoas.
John
360
Como obtenho a hora atual em Python?
O timemódulo
O timemódulo fornece funções que informam o tempo em "segundos desde a época", bem como outros utilitários.
import time
Hora da época do Unix
Este é o formato no qual você deve obter os carimbos de data e hora para salvar nos bancos de dados. É um número de ponto flutuante simples que pode ser convertido em um número inteiro. Também é bom para aritmética em segundos, pois representa o número de segundos desde 1º de janeiro de 1970 00:00:00 e é luz de memória em relação às outras representações de tempo que veremos a seguir:
>>> time.time()1424233311.771502
Esse registro de data e hora não conta com segundos bissextos, portanto não é linear - os segundos bissextos são ignorados. Portanto, embora não seja equivalente ao padrão internacional UTC, é próximo e, portanto, bastante bom para a maioria dos casos de manutenção de registros.
Isso não é ideal para agendamento humano, no entanto. Se você tiver um evento futuro que deseja que ocorra em um determinado ponto no tempo, convém armazenar esse tempo com uma sequência que possa ser analisada em um objeto de data e hora ou em um objeto de data e hora serializado (estes serão descritos mais adiante).
time.ctime
Você também pode representar o horário atual da maneira preferida pelo seu sistema operacional (o que significa que ele pode mudar quando você altera as preferências do sistema; portanto, não confie nisso para que seja padrão em todos os sistemas, como já vi outros esperarem) . Isso geralmente é fácil de usar, mas normalmente não resulta em strings que podem ser classificadas cronologicamente:
>>> time.ctime()'Tue Feb 17 23:21:56 2015'
Você também pode hidratar os carimbos de data e hora na forma legível por humanos ctime:
>>> time.ctime(1424233311.771502)'Tue Feb 17 23:21:51 2015'
Essa conversão também não é boa para manutenção de registros (exceto em textos que serão analisados apenas por humanos - e com o reconhecimento óptico de caracteres e a inteligência artificial aprimorados, acho que o número desses casos diminuirá).
datetime módulo
O datetimemódulo também é bastante útil aqui:
>>>import datetime
datetime.datetime.now
O datetime.nowé um método de classe que retorna a hora atual. Ele usa as informações time.localtimesem o fuso horário (se não for fornecido, consulte o fuso horário ciente abaixo). Ele tem uma representação (que permite recriar um objeto equivalente) ecoado no shell, mas quando impresso (ou coagido a str), ele está no formato legível por humanos (e quase ISO) e o tipo lexicográfico é equivalente ao ordem cronológica:
UTC é um padrão de tempo que é quase equivalente ao fuso horário GMT. (Enquanto GMT e UTC não mudam para o horário de verão, seus usuários podem mudar para outros fusos horários, como o horário de verão britânico, durante o verão.)
fuso horário datado
No entanto, nenhum dos objetos de data e hora que criamos até agora pode ser facilmente convertido em vários fusos horários. Podemos resolver esse problema com o pytzmódulo:
>>>import pytz
>>> then = datetime.datetime.now(pytz.utc)>>> then
datetime.datetime(2015,2,18,4,55,58,753949, tzinfo=<UTC>)
De maneira equivalente, no Python 3, temos a timezoneclasse com uma timezoneinstância utc anexada, o que também torna o fuso horário do objeto ciente (mas a conversão para outro fuso horário sem o pytzmódulo útil é deixada como um exercício para o leitor):
Você também pode conscientizar um objeto de data e hora ingênuo com o método de pytzfuso horário localizeou substituindo o atributo tzinfo (por que replaceisso é feito às cegas), mas esses são mais recursos do que práticas recomendadas:
O pytzmódulo nos permite datetimeconscientizar o fuso horário de nossos objetos e converter os horários nas centenas de fusos horários disponíveis no pytzmódulo.
Pode-se ostensivamente serializar este objeto para UTC tempo e loja que em um banco de dados, mas isso exigiria muito mais memória e seria mais propenso a erros do que simplesmente armazenar o horário da Unix Epoch, que demonstrei primeiro.
As outras maneiras de visualizar os horários são muito mais propensas a erros, especialmente ao lidar com dados que podem vir de diferentes fusos horários. Você deseja que não haja confusão quanto ao fuso horário em que uma string ou objeto de data e hora serializados foi destinado.
Se você estiver exibindo o horário com Python para o usuário, ctimefuncionará bem, não em uma tabela (normalmente não é bem organizada), mas talvez em um relógio. No entanto, eu pessoalmente recomendo, ao lidar com a hora no Python, usando a hora do Unix ou um datetimeobjeto UTC com reconhecimento de fuso horário .
Por que não perguntar ao Observatório Naval dos EUA , o cronometrista oficial da Marinha dos Estados Unidos?
import requests
from lxml import html
page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)print(tree.xpath('//html//body//h3//pre/text()')[1])
Se você mora na área de DC (como eu), a latência pode não ser tão ruim ...
@ C8H10N4O2 Enquanto você estiver certo, as outras respostas presumem que o seu computador já sabe a hora correta, essa resposta pressupõe que o computador tenha uma conexão com a Internet, que você esteja nos EUA e que nunca removerá esse arquivo / alterar o link. Muito mais suposições nesta resposta do que as aceitas. Ainda nenhum inteligente a menos
sudobangbang
33
Usando pandas para obter a hora atual, meio que exagere no problema:
import pandas as pd
print(pd.datetime.now())print(pd.datetime.now().date())print(pd.datetime.now().year)print(pd.datetime.now().month)print(pd.datetime.now().day)print(pd.datetime.now().hour)print(pd.datetime.now().minute)print(pd.datetime.now().second)print(pd.datetime.now().microsecond)
>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")01/09/201513:11
Além disso, esta tabela é uma referência necessária para escolher os códigos de formato apropriados para obter a data formatada da maneira que você deseja (da documentação "datetime" do Python aqui ).
strftime(time_format)retorna a hora local atual como uma sequência que corresponde à determinada time_format. Nota: time.strftime()e datetime.strftime()suporte a diferentes conjuntos de diretivas, por exemplo, %znão é suportado time.strftime()no Python 2 .
JFS
1
É uma prática recomendada usar data e hora em vez de hora?
Kristen G.
2
Muitas timefunções do módulo são invólucros finos em torno das funções C correspondentes. datetimeé um nível mais alto e geralmente é mais portátil.
JFS
24
se você já estiver usando o numpy, poderá usar diretamente a função numpy.datetime64 ().
import numpy as np
str(np.datetime64('now'))
apenas para data:
str(np.datetime64('today'))
ou, se você já estiver usando pandas, poderá usar a função pandas.to_datetime ()
datetime.now()retorna a hora atual como um objeto de data e hora ingênuo que representa a hora no fuso horário local. Esse valor pode ser ambíguo, por exemplo, durante transições de horário de verão ("fall back"). Para evitar ambiguidade, o fuso horário UTC deve ser usado:
from datetime import datetime
utc_time = datetime.utcnow()print(utc_time)# -> 2014-12-22 22:48:59.916417
Ou um objeto que reconhece o fuso horário com as informações correspondentes do fuso horário anexadas (Python 3.2+):
from datetime import datetime, timezone
now = datetime.now(timezone.utc).astimezone()print(now)# -> 2014-12-23 01:49:25.837541+03:00
import datetime
date_time = datetime.datetime.now()
date = date_time.date()# Gives the date
time = date_time.time()# Gives the timeprint date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond
Faça dir(date)ou quaisquer variáveis, incluindo o pacote. Você pode obter todos os atributos e métodos associados à variável.
Eu acho que você quer dizer "datetime.now (). Strftime (...)"
hlin117
sim, isso pode ser feito como você disse. "datetime.datetime.now (). strftime ("% H:% M:% S:% MS ")"
user2030113 4/04/14
3
% MS não fornece milissegundos !!
ZF007 13/06/19
15
Por padrão, a now()função retorna a saída no YYYY-MM-DD HH:MM:SS:MSformato. Use o exemplo de script abaixo para obter a data e hora atuais em um script Python e imprimir os resultados na tela. Crie um arquivo getDateTime1.pycom o conteúdo abaixo.
Esta questão não precisa de uma nova resposta apenas para o efeito ... um brinquedo / módulo novo e brilhante, no entanto, é justificativa suficiente. Sendo essa a biblioteca Pendulum , que parece fazer o tipo de coisa que a flecha tentou, exceto sem as falhas e os erros inerentes que cercam a flecha.
Existem muitos padrões que precisam ser abordados, incluindo vários RFCs e ISOs, com os quais se preocupar. Já os misture; não se preocupe, dê uma olhadadir(pendulum.constants) formatos RFC e ISO, no entanto.
Quando dizemos local, o que queremos dizer? Bem, eu quero dizer:
Presumivelmente, a maioria de vocês quer dizer em outro lugar.
E continua. Resumindo: O Pêndulo tenta fazer por data e hora o que os pedidos fizeram pelo HTTP. Vale a pena considerar, principalmente pela facilidade de uso e pela extensa documentação.
Quero aproveitar o tempo em milissegundos. Uma maneira simples de obtê-los:
import time, datetime
print(datetime.datetime.now().time())# 11:20:08.272239# Or in a more complicated wayprint(datetime.datetime.now().time().isoformat())# 11:20:08.272239print(datetime.datetime.now().time().strftime('%H:%M:%S.%f'))# 11:20:08.272239# But do not use this:print(time.strftime("%H:%M:%S.%f", time.localtime()), str)# 11:20:08.%f
Mas eu quero apenas milissegundos , certo? A maneira mais curta de obtê-los:
import time
time.strftime("%H:%M:%S", time.localtime())+'.%d'%(time.time()%1*1000)# 11:34:23.751
Adicione ou remova zeros da última multiplicação para ajustar o número de casas decimais ou apenas:
Como ninguém o mencionou ainda, e isso é algo que me deparei recentemente ... o método fromutc () de um fuso horário do pytz combinado com o utcnow () do datetime é a melhor maneira que eu encontrei para obter um horário (e data) útil no momento em qualquer fuso horário.
Surpreendentemente, todas as respostas acima não mencionaram fusos horários. você também deve incluir strftime para obter o formato desejado.
GraphicalDot
1
Não incluí isso, pois ele já foi abordado em outras respostas (e a formatação da tela não fazia parte da pergunta).
Kungphu
7
Esta pergunta é para o Python, mas como o Django é uma das estruturas mais usadas para o Python, é importante notar que, se você estiver usando o Django, sempre poderá usá-lo em timezone.now()vez de datetime.datetime.now(). O primeiro é o fuso horário "consciente", enquanto o segundo não.
Respostas:
Usar:
E apenas a hora:
Consulte a documentação para obter mais informações.
Para salvar a digitação, você pode importar o
datetime
objeto dodatetime
módulo:Em seguida, remova a guia
datetime.
de todas as opções acima.fonte
datetime.datetime.now()
no meu console interativo Python 2.7 (o IronPython ainda não foi atualizado) me dá o mesmo comportamento do exemplo mais recente usadoprint()
na resposta. Não repliquei com êxito o que a resposta original mostra (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Não que eu realmente quero, o print () comportamento é o preferido, mas estou curioso.)datetime.now()
em seu próprio imprime-lo para fora a mesma era como seus programas de respostaprint(datetime.now())
...Você pode usar
time.strftime()
:fonte
time
módulo vs. odatetime
módulo?localtime()
vez degmtime()
para obter a hora local.datetime
vs.time
.Neste exemplo, a saída será assim:
'2013-09-18 11:16:32'
Aqui está a lista de
strftime
diretivas .fonte
Semelhante à resposta de Harley , mas use a
str()
função para um formato legível rápido e sujo, um pouco mais humano:fonte
O
time
móduloO
time
módulo fornece funções que informam o tempo em "segundos desde a época", bem como outros utilitários.Hora da época do Unix
Este é o formato no qual você deve obter os carimbos de data e hora para salvar nos bancos de dados. É um número de ponto flutuante simples que pode ser convertido em um número inteiro. Também é bom para aritmética em segundos, pois representa o número de segundos desde 1º de janeiro de 1970 00:00:00 e é luz de memória em relação às outras representações de tempo que veremos a seguir:
Esse registro de data e hora não conta com segundos bissextos, portanto não é linear - os segundos bissextos são ignorados. Portanto, embora não seja equivalente ao padrão internacional UTC, é próximo e, portanto, bastante bom para a maioria dos casos de manutenção de registros.
Isso não é ideal para agendamento humano, no entanto. Se você tiver um evento futuro que deseja que ocorra em um determinado ponto no tempo, convém armazenar esse tempo com uma sequência que possa ser analisada em um objeto de data e hora ou em um objeto de data e hora serializado (estes serão descritos mais adiante).
time.ctime
Você também pode representar o horário atual da maneira preferida pelo seu sistema operacional (o que significa que ele pode mudar quando você altera as preferências do sistema; portanto, não confie nisso para que seja padrão em todos os sistemas, como já vi outros esperarem) . Isso geralmente é fácil de usar, mas normalmente não resulta em strings que podem ser classificadas cronologicamente:
Você também pode hidratar os carimbos de data e hora na forma legível por humanos
ctime
:Essa conversão também não é boa para manutenção de registros (exceto em textos que serão analisados apenas por humanos - e com o reconhecimento óptico de caracteres e a inteligência artificial aprimorados, acho que o número desses casos diminuirá).
datetime
móduloO
datetime
módulo também é bastante útil aqui:datetime.datetime.now
O
datetime.now
é um método de classe que retorna a hora atual. Ele usa as informaçõestime.localtime
sem o fuso horário (se não for fornecido, consulte o fuso horário ciente abaixo). Ele tem uma representação (que permite recriar um objeto equivalente) ecoado no shell, mas quando impresso (ou coagido astr
), ele está no formato legível por humanos (e quase ISO) e o tipo lexicográfico é equivalente ao ordem cronológica:datetime
utcnow
Você pode obter um objeto datetime no horário UTC, um padrão global, fazendo o seguinte:
UTC é um padrão de tempo que é quase equivalente ao fuso horário GMT. (Enquanto GMT e UTC não mudam para o horário de verão, seus usuários podem mudar para outros fusos horários, como o horário de verão britânico, durante o verão.)
fuso horário datado
No entanto, nenhum dos objetos de data e hora que criamos até agora pode ser facilmente convertido em vários fusos horários. Podemos resolver esse problema com o
pytz
módulo:De maneira equivalente, no Python 3, temos a
timezone
classe com umatimezone
instância utc anexada, o que também torna o fuso horário do objeto ciente (mas a conversão para outro fuso horário sem opytz
módulo útil é deixada como um exercício para o leitor):E vemos que podemos facilmente converter em fusos horários o objeto utc original.
Você também pode conscientizar um objeto de data e hora ingênuo com o método de
pytz
fuso horáriolocalize
ou substituindo o atributo tzinfo (por quereplace
isso é feito às cegas), mas esses são mais recursos do que práticas recomendadas:O
pytz
módulo nos permitedatetime
conscientizar o fuso horário de nossos objetos e converter os horários nas centenas de fusos horários disponíveis nopytz
módulo.Pode-se ostensivamente serializar este objeto para UTC tempo e loja que em um banco de dados, mas isso exigiria muito mais memória e seria mais propenso a erros do que simplesmente armazenar o horário da Unix Epoch, que demonstrei primeiro.
As outras maneiras de visualizar os horários são muito mais propensas a erros, especialmente ao lidar com dados que podem vir de diferentes fusos horários. Você deseja que não haja confusão quanto ao fuso horário em que uma string ou objeto de data e hora serializados foi destinado.
Se você estiver exibindo o horário com Python para o usuário,
ctime
funcionará bem, não em uma tabela (normalmente não é bem organizada), mas talvez em um relógio. No entanto, eu pessoalmente recomendo, ao lidar com a hora no Python, usando a hora do Unix ou umdatetime
objeto UTC com reconhecimento de fuso horário .fonte
Faz
t
- número da bóia, bom para a medição do intervalo de tempo.Há alguma diferença para as plataformas Unix e Windows.
fonte
Isso gera o GMT atual no formato especificado. Há também um
localtime()
método.Esta página tem mais detalhes.
fonte
As respostas anteriores são boas sugestões, mas acho mais fácil usar
ctime()
:Isso fornece uma representação de seqüência de caracteres bem formatada da hora local atual.
fonte
A maneira mais rápida é:
fonte
Se você precisar da hora atual como um
time
objeto:fonte
.isoformat()
está na documentação, mas ainda não está aqui (isso é bastante semelhante à resposta de @Ray Vega):fonte
Por que não perguntar ao Observatório Naval dos EUA , o cronometrista oficial da Marinha dos Estados Unidos?
Se você mora na área de DC (como eu), a latência pode não ser tão ruim ...
fonte
Usando pandas para obter a hora atual, meio que exagere no problema:
Resultado:
fonte
Isto é o que acabei indo com:
Além disso, esta tabela é uma referência necessária para escolher os códigos de formato apropriados para obter a data formatada da maneira que você deseja (da documentação "datetime" do Python aqui ).
fonte
strftime(time_format)
retorna a hora local atual como uma sequência que corresponde à determinadatime_format
. Nota:time.strftime()
edatetime.strftime()
suporte a diferentes conjuntos de diretivas, por exemplo,%z
não é suportadotime.strftime()
no Python 2 .time
funções do módulo são invólucros finos em torno das funções C correspondentes.datetime
é um nível mais alto e geralmente é mais portátil.se você já estiver usando o numpy, poderá usar diretamente a função numpy.datetime64 ().
apenas para data:
ou, se você já estiver usando pandas, poderá usar a função pandas.to_datetime ()
ou,
fonte
Você pode usar o
time
módulo:O uso do capital
Y
dá o ano inteiro, e o usoy
daria06/02/15
.Você também pode usar o código a seguir para fornecer um tempo mais longo:
fonte
datetime.now()
retorna a hora atual como um objeto de data e hora ingênuo que representa a hora no fuso horário local. Esse valor pode ser ambíguo, por exemplo, durante transições de horário de verão ("fall back"). Para evitar ambiguidade, o fuso horário UTC deve ser usado:Ou um objeto que reconhece o fuso horário com as informações correspondentes do fuso horário anexadas (Python 3.2+):
fonte
Faça
dir(date)
ou quaisquer variáveis, incluindo o pacote. Você pode obter todos os atributos e métodos associados à variável.fonte
import datetime
, então édatetime.datetime.now()
\ n sefrom datetime import datetime
então édatetime.now()
fonte
Por padrão, a
now()
função retorna a saída noYYYY-MM-DD HH:MM:SS:MS
formato. Use o exemplo de script abaixo para obter a data e hora atuais em um script Python e imprimir os resultados na tela. Crie um arquivogetDateTime1.py
com o conteúdo abaixo.A saída se parece abaixo:
fonte
Esta questão não precisa de uma nova resposta apenas para o efeito ... um brinquedo / módulo novo e brilhante, no entanto, é justificativa suficiente. Sendo essa a biblioteca Pendulum , que parece fazer o tipo de coisa que a flecha tentou, exceto sem as falhas e os erros inerentes que cercam a flecha.
Por exemplo, a resposta para a pergunta original:
Existem muitos padrões que precisam ser abordados, incluindo vários RFCs e ISOs, com os quais se preocupar. Já os misture; não se preocupe, dê uma olhada
dir(pendulum.constants)
formatos RFC e ISO, no entanto.Quando dizemos local, o que queremos dizer? Bem, eu quero dizer:
Presumivelmente, a maioria de vocês quer dizer em outro lugar.
E continua. Resumindo: O Pêndulo tenta fazer por data e hora o que os pedidos fizeram pelo HTTP. Vale a pena considerar, principalmente pela facilidade de uso e pela extensa documentação.
fonte
Hora atual de um fuso horário
fonte
Experimente o módulo de seta em http://crsmithdev.com/arrow/ :
Ou a versão UTC:
Para alterar sua saída, adicione .format ():
Para um fuso horário específico:
Uma hora atrás:
Ou se você quiser a essência.
fonte
arrow.now('Time/Zone')
pode falhar para alguns fusos horários (arrow
usosdateutil
que tem quebrado UTC -> conversões locais que estão dentro usadoarrow.now()
Nota:.pytz
não tem essa questão também,. há outras questões de fuso horário relacionadasQuero aproveitar o tempo em milissegundos. Uma maneira simples de obtê-los:
Mas eu quero apenas milissegundos , certo? A maneira mais curta de obtê-los:
Adicione ou remova zeros da última multiplicação para ajustar o número de casas decimais ou apenas:
fonte
Você pode usar esta função para obter o tempo (infelizmente não diz AM ou PM):
Para que as horas, minutos, segundos e milissegundos sejam mesclados posteriormente, você pode usar estas funções:
Hora:
Minuto:
Segundo:
Milissegundo:
fonte
Se você deseja apenas o registro de data e hora atual em ms (por exemplo, para medir o tempo de execução), também pode usar o módulo "timeit":
fonte
A seguir, é o que eu uso para obter o tempo sem precisar formatar. Algumas pessoas não gostam do método split, mas é útil aqui:
Ele será impresso no formato HH: MM: SS.
fonte
Como ninguém o mencionou ainda, e isso é algo que me deparei recentemente ... o método fromutc () de um fuso horário do pytz combinado com o utcnow () do datetime é a melhor maneira que eu encontrei para obter um horário (e data) útil no momento em qualquer fuso horário.
Se tudo o que você quer é o tempo, você pode conseguir isso
local_time.time()
.fonte
Esta pergunta é para o Python, mas como o Django é uma das estruturas mais usadas para o Python, é importante notar que, se você estiver usando o Django, sempre poderá usá-lo em
timezone.now()
vez dedatetime.datetime.now()
. O primeiro é o fuso horário "consciente", enquanto o segundo não.Veja esta resposta do SO e o documento do Django para obter detalhes e justificativa por trás
timezone.now()
.fonte
Você pode fazer isso usando ctime ():
resultado:
Sat Sep 14 21:27:08 2019
Essas saídas são diferentes porque o registro de data e hora retornado
ctime()
depende da sua localização geográfica.fonte