Estou a usar:
str(datetime.datetime.today()).split()[0]
para retornar a data de hoje no YYYY-MM-DD
formato.
Existe uma maneira menos grosseira de conseguir isso?
Estou a usar:
str(datetime.datetime.today()).split()[0]
para retornar a data de hoje no YYYY-MM-DD
formato.
Existe uma maneira menos grosseira de conseguir isso?
Respostas:
Você pode usar o strftime :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Além disso, para quem também procura uma hora, um minuto e um segundo preenchidos com zero no final: (Comentado por Gabriel Staples )
datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
time.strftime("%Y-%m-%d")
?
datetime.utcnow().strftime('%Y-%m-%d')
date
tem este disponível, bem comodatetime
Você pode usar datetime.date.today()
e converter o datetime.date
objeto resultante em uma sequência:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
como 'DMY', o separador /
para M/D/Y
e o separador -
para Y-M-D
. Embora nem todos sigam essas diretrizes, ajudaria a ler datas internacionalmente, desde que nem todos tenham mudado Y-M-D
.
Datetime é simplesmente adorável se você gosta de lembrar códigos engraçados. Você não prefere a simplicidade?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Este módulo é inteligente o suficiente para entender o que você quer dizer .
Apenas faça pip install arrow
.
Adendo: em resposta àqueles que se exercitam sobre essa resposta, digamos que a flecha representa uma das alternativas abordagens para lidar com datas em Python. Isso é principalmente o que eu queria sugerir.
print(date.today())
>> "2018-12-16" ?? lol e obtenha facilmente os valores int t.year,t.month,t.day+1
>> (2018, 12, 17) onde t = date.today()
e o fato de as pessoas não precisarem chamar a seta verde para saber a hora. oh Deus isso é muito código para lembrar ...
import datetime
diferença import arrow
? Claro que um está incorporado, mas se arrow
fornece um formato mais conveniente, por que não usá-lo?
arrow
? Mas, para muitos projetos simples, é apenas desnecessário. Além disso, em muitos projetos internos da empresa, as pessoas precisam obter aprovação para incluir novas bibliotecas.
Eu sempre uso a isoformat()
função para isso.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Observe que isso também funciona em objetos de data e hora se você precisar da hora no formato padrão também.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Outras respostas sugerem o uso de python datetime.datetime
, mas como @Bill Bell disse, existem outras bibliotecas que oferecem datetime
interfaces mais simples como um serviço ou como parte de um ecossistema maior de APIs. Aqui estão duas dessas bibliotecas que datetimes
simplificam o trabalho.
Você pode usar pd.to_datetime
na biblioteca de pandas . Aqui estão várias opções, dependendo do que você deseja devolver.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Como um objeto de data e hora python ,
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Como uma sequência de datas formatada,
pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'
# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'
Para obter apenas a data do registro de data e hora, ligue Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Além disso to_datetime
, você pode instanciar diretamente um Timestamp
objeto usando,
pd.Timestamp('today') # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')
pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)
Se você deseja conscientizar o fuso horário do carimbo de data e hora, passe um fuso horário para o tz
argumento.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Se você estiver trabalhando com pêndulo , existem algumas opções interessantes. Você pode obter o carimbo de data / hora atual usando now()
ou a data de hoje usando today()
.
import pendulum
pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))
pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
Além disso, você também pode obter a data tomorrow()
ou yesterday()
a data diretamente, sem ter que fazer nenhuma aritmética adicional de timedelta.
pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
Existem várias opções de formatação disponíveis.
pendulum.now().to_date_string()
# '2019-03-27'
pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'
pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'
Resposta muito tardia, mas você pode usar:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Você pode usar,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
ainda é melhor
Eu prefiro isso, porque isso é simples, mas talvez de alguma forma ineficiente e com erros. Você deve verificar o código de saída do comando shell se desejar um programa fortemente à prova de erros.
os.system('date +%Y-%m-%d')