Estoy usando:
str(datetime.datetime.today()).split()[0]
para devolver la fecha de hoy en el YYYY-MM-DD
formato.
¿Hay una manera menos cruda de lograr esto?
Estoy usando:
str(datetime.datetime.today()).split()[0]
para devolver la fecha de hoy en el YYYY-MM-DD
formato.
¿Hay una manera menos cruda de lograr esto?
Respuestas:
Puedes usar strftime :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Además, para cualquiera que también busque una hora, minuto y segundo con relleno cero al final: (Comentario de 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
tiene esto disponible, así comodatetime
Puede usar datetime.date.today()
y convertir el datetime.date
objeto resultante en una cadena:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
a 'DMY', el separador /
a M/D/Y
y el separador -
a Y-M-D
. Aunque no todo el mundo sigue estas pautas, sería útil leer las fechas a nivel internacional siempre que no todos hayan cambiado Y-M-D
.
Datetime es simplemente encantador si te gusta recordar códigos divertidos. ¿No preferirías la simplicidad?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Este módulo es lo suficientemente inteligente como para entender lo que quieres decir .
Solo hazlo pip install arrow
.
Anexo: En respuesta a aquellos que se ejercitan sobre esta respuesta, permítanme decir que la flecha representa uno de los enfoques alternativos para lidiar con las fechas en Python. Eso es principalmente lo que quise sugerir.
print(date.today())
>> "2018-12-16"? lol y obtenga fácilmente los valores int t.year,t.month,t.day+1
>> (2018, 12, 17) dónde t = date.today()
y el hecho de que las personas no tienen que llamar a la flecha verde para decirles la hora. oh dios, esto es demasiado código para recordar ...
import datetime
diferente de import arrow
? Seguro que hay uno incorporado, pero si arrow
proporciona un formato más conveniente, ¿por qué no usarlo?
arrow
? Pero, para muchos proyectos simples, es innecesario. Además, en muchos proyectos internos de la empresa, las personas deben obtener la aprobación para incluir nuevas bibliotecas.
Siempre uso la isoformat()
función para esto.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Tenga en cuenta que esto también funciona en objetos de fecha y hora si también necesita la hora en formato estándar.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Otras respuestas sugieren el uso de Python datetime.datetime
, pero como dijo @Bill Bell, hay otras bibliotecas que ofrecen datetime
interfaces más simples como servicio o como parte de un ecosistema más grande de API. Aquí hay dos bibliotecas que hacen que trabajar condatetimes
muy simple.
Puedes usar pd.to_datetime
desde la biblioteca de pandas . Aquí hay varias opciones, dependiendo de lo que desea devolver.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Como un objeto de fecha y hora de Python ,
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Como una cadena de fecha con formato,
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 obtener solo la fecha de la marca de tiempo, llame al Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Además to_datetime
, puede crear una instancia directa de un 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)
Si desea que su zona horaria Timestamp sea consciente, pase una zona horaria al tz
argumento.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Si está trabajando con péndulo , hay algunas opciones interesantes. Puede obtener la marca de tiempo actual usando now()
o la fecha de hoy 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'))
Además, también puede obtener tomorrow()
o yesterday()
la fecha directamente sin tener que hacer ninguna aritmética adicional 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'))
Hay varias opciones de formato disponibles.
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'
Respuesta muy tardía, pero puedes usar:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Puedes usar,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
es aún mejor
Prefiero esto, porque es simple, pero quizás de alguna manera ineficiente y con errores. Debe verificar el código de salida del comando de shell si desea un programa fuertemente a prueba de errores.
os.system('date +%Y-%m-%d')