web-dev-qa-db-fra.com

Obtenir la date d'aujourd'hui en AAAA-MM-JJ en Python?

J'utilise:

str(datetime.datetime.today()).split()[0]

pour renvoyer la date d'aujourd'hui sous la forme AAAA-MM-JJ .

Y a-t-il un moyen moins brutal d'y parvenir?

141
Pyderman

Vous pouvez utiliser strftime :

datetime.datetime.today().strftime('%Y-%m-%d')
272
diegueus9

Il y a un moyen encore plus simple que la réponse acceptée; valable à la fois pour Python 2 et 3.

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'
52
kmonsoor

Datetime est tout simplement magnifique si vous aimez vous souvenir de codes amusants. Ne préférez-vous pas la simplicité?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'

Ce module est assez intelligent pour comprendre ce que vous voulez dire

Il suffit de faire pip install arrow.

32
Bill Bell

J'utilise toujours la fonction isoformat() pour cela.

from datetime import date    
today = date.today().isoformat()
print(today) # '2018-12-05'

Notez que cela fonctionne également sur les objets datetime si vous avez également besoin de l'heure au format standard.

from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
9
JdH

D'autres réponses suggèrent l'utilisation du datetime.datetime de python, mais comme l'a dit @Bill Bell, il existe d'autres bibliothèques offrant des interfaces datetime plus simples, en tant que service ou dans le cadre d'un écosystème plus large d'API. Voici deux de ces bibliothèques qui rendent le travail avec datetimes très simple.

PANDAS

Vous pouvez utiliser pd.to_datetime à partir de pandas library. Voici différentes options, en fonction de ce que vous voulez retourner.

import pandas as pd

pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')

En tant que python datetime object,

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

En tant que chaîne de date formatée,

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'

Pour obtenir uniquement la date de l'horodatage, appelez Timestamp.date.

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)

Mis à part to_datetime, vous pouvez directement instancier un objet Timestamp en utilisant,

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 vous souhaitez définir votre fuseau horaire Timestamp, transmettez-le à l'argument tz.

pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

PENDULE

Si vous travaillez avec pendule , il existe des choix intéressants. Vous pouvez obtenir l’horodatage actuel en utilisant now() ou la date du jour en utilisant 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'))

De plus, vous pouvez aussi obtenir directement la date de tomorrow() ou yesterday() sans avoir à faire d’autres calculs arithmétiques 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'))

Il existe différentes options de formatage 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'
3
cs95

C'est le moyen le plus simple d'obtenir une date en python.

from datetime import date
todayDate = date.today()
print(todayDate) #prints today's date for eg. 2019-07-09

Vous n'avez même pas besoin d'installer de paquet. Ils sont tous déjà intégrés à python.

1
Kaarthikeyan

J'ai pu obtenir la réponse acceptée une fois que j'ai importé datetime, puis supprimé "datetime." de la commande. Voici ce qui a fonctionné pour moi (python 3.6):

from datetime import datetime

date = datetime.today().strftime('%Y-%m-%d')
1
Karl Baker

Je préfère ça. (parce que c'est simple. mais peut-être quelque peu inefficace et bogué. Vous devez vérifier le code de sortie de la commande Shell si vous voulez un programme très fortement anti-erreur.)

os.system('date +%Y-%m-%d')
0
plhn