it-swarm.com.de

Erhalten Sie das heutige Datum in JJJJ-MM-TT in Python?

Ich benutze:

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

um das heutige Datum in der Form JJJJ-MM-TT zurückzugeben.

Gibt es einen weniger groben Weg, um dies zu erreichen?

141
Pyderman

Sie können strftime verwenden:

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

Es gibt einen einfacheren Weg als die akzeptierte Antwort; gültig sowohl für Python 2 & 3.

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

Datetime ist einfach wunderbar, wenn Sie sich an lustige Codes erinnern möchten. Würden Sie nicht die Einfachheit bevorzugen?

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

Dieses Modul ist klug genug, um zu verstehen, was Sie bedeuten

Mach einfach pip install arrow.

32
Bill Bell

Ich benutze dafür immer die Funktion isoformat().

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

Beachten Sie, dass dies auch für datetime-Objekte funktioniert, wenn Sie die Uhrzeit auch im Standardformat benötigen.

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

Andere Antworten legen die Verwendung von Pythons datetime.datetime nahe, aber wie @Bill Bell sagte, gibt es andere Bibliotheken, die einfachere datetime Schnittstellen entweder als Service oder als Teil eines größeren Ökosystems von APIs anbieten. Hier sind zwei solcher Bibliotheken, die die Arbeit mit datetimes sehr einfach machen.

PANDAS

Sie können pd.to_datetime aus der pandas Bibliothek verwenden. Je nachdem, was Sie zurückgeben möchten, stehen Ihnen verschiedene Optionen zur Verfügung.

import pandas as pd

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

Als Python datetime Objekt

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

Als formatierte Datumszeichenfolge

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'

Um nur das Datum aus dem Zeitstempel zu erhalten, rufen Sie Timestamp.date auf.

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

Abgesehen von to_datetime können Sie ein Timestamp Objekt direkt instanziieren, indem Sie

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)

Wenn Sie Ihre Timestamp-Zeitzone berücksichtigen möchten, übergeben Sie eine Zeitzone an das Argument tz.

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

PENDEL

Wenn Sie mit Pendel arbeiten, gibt es einige interessante Möglichkeiten. Sie können den aktuellen Zeitstempel mit now() oder das heutige Datum mit today() abrufen.

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'))

Darüber hinaus können Sie das Datum von tomorrow() oder yesterday() direkt abrufen, ohne eine zusätzliche Zeitdelta-Arithmetik durchführen zu müssen.

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'))

Es stehen verschiedene Formatierungsoptionen zur Verfügung.

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

Dies ist der einfachste Weg, um ein Datum in Python zu erhalten.

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

Sie müssen nicht einmal Pakete installieren. Diese sind alle bereits in Python integriert.

1
Kaarthikeyan

Nachdem ich datetime importiert und dann "datetime." aus dem Befehl entfernt habe, konnte ich die akzeptierte Antwort zum Funktionieren bringen. Folgendes hat bei mir funktioniert (Python 3.6):

from datetime import datetime

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

Ich bevorzuge das. (weil dies einfach ist, aber möglicherweise ineffizient und fehlerhaft. Sie müssen den Exit-Code des Shell-Befehls überprüfen, wenn Sie ein sehr fehlerfreies stark -Programm wünschen.)

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