Ich benutze:
str(datetime.datetime.today()).split()[0]
um das heutige Datum im YYYY-MM-DD
Format zurückzugeben.
Gibt es einen weniger groben Weg, um dies zu erreichen?
Ich benutze:
str(datetime.datetime.today()).split()[0]
um das heutige Datum im YYYY-MM-DD
Format zurückzugeben.
Gibt es einen weniger groben Weg, um dies zu erreichen?
Antworten:
Sie können strftime verwenden :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Darüber hinaus für alle, die am Ende auch nach einer gepolsterten Stunde, Minute und Sekunde suchen: (Kommentar von 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
dies ebenso verfügbar ist wiedatetime
Sie können datetime.date.today()
das resultierende datetime.date
Objekt verwenden und in eine Zeichenfolge konvertieren :
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
zu ‚DMY‘, dem Separator /
zu M/D/Y
und der Separator -
auf Y-M-D
. Obwohl nicht jeder diese Richtlinien befolgt, würde es helfen, Daten international zu lesen, solange nicht jeder zu ihnen gewechselt ist Y-M-D
.
Datetime ist einfach schön, wenn Sie sich gerne an lustige Codes erinnern. Würden Sie nicht Einfachheit bevorzugen?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Dieses Modul ist klug genug, um zu verstehen, was Sie meinen .
Tu es einfach pip install arrow
.
Nachtrag: Als Antwort auf diejenigen, die sich mit dieser Antwort beschäftigen, möchte ich nur sagen, dass der Pfeil einen der alternativen Ansätze für den Umgang mit Daten in Python darstellt. Das wollte ich vor allem vorschlagen.
print(date.today())
>> "2018-12-16"? lol und einfach die int-Werte t.year,t.month,t.day+1
>> (2018, 12, 17) erhalten, wo t = date.today()
und die Tatsache, dass die Leute keinen grünen Pfeil aufrufen müssen, um ihnen die Zeit zu sagen. Oh Gott, das ist zu viel Code, um sich daran zu erinnern ...
import datetime
anders als import arrow
? Sicher ist eines eingebaut, aber wenn es arrow
ein bequemeres Format bietet, warum nicht?
arrow
? Für viele einfache Projekte ist dies jedoch nicht erforderlich. Außerdem muss ppl in vielen unternehmensinternen Projekten die Genehmigung für die Aufnahme neuer Bibliotheken erhalten.
Ich benutze immer die isoformat()
Funktion dafür.
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 Zeit auch im Standardformat benötigen.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Andere Antworten deuten auf die Verwendung von Python hin datetime.datetime
, 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 solche Bibliotheken, mit denen man arbeiten kanndatetimes
sehr einfach machen.
Sie können pd.to_datetime
aus der Pandas- Bibliothek verwenden. Hier finden Sie verschiedene Optionen, je nachdem, was Sie zurückgeben möchten.
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'
Rufen Sie an, um nur das Datum aus dem Zeitstempel abzurufen Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Abgesehen davon 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 Zeitstempel-Zeitzone bekannt machen möchten, übergeben Sie dem tz
Argument eine Zeitzone .
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Wenn Sie mit Pendeln arbeiten , gibt es einige interessante Möglichkeiten. Sie können den aktuellen Zeitstempel mit now()
oder das heutige Datum mit abrufen 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'))
Darüber hinaus können Sie auch erhalten tomorrow()
oder yesterday()
direkt ‚s Datum ohne zusätzliche Timedelta - Arithmetik zu tun.
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'
Sehr späte Antwort, aber Sie können verwenden:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Sie können verwenden,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
ist noch besser
Ich bevorzuge dies, weil dies einfach ist, aber vielleicht irgendwie ineffizient und fehlerhaft. Sie müssen den Exit-Code des Shell-Befehls überprüfen, wenn Sie ein stark fehlersicheres Programm wünschen .
os.system('date +%Y-%m-%d')