Używam:
str(datetime.datetime.today()).split()[0]
zwrócić dzisiejszą datę w YYYY-MM-DD
formacie.
Czy istnieje mniej prymitywny sposób na osiągnięcie tego?
Używam:
str(datetime.datetime.today()).split()[0]
zwrócić dzisiejszą datę w YYYY-MM-DD
formacie.
Czy istnieje mniej prymitywny sposób na osiągnięcie tego?
Odpowiedzi:
Możesz użyć strftime :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Dodatkowo, dla każdego, kto szuka zerowej godziny, minuty i sekundy na końcu: (komentarz: 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
ma to również dostępnedatetime
Możesz użyć datetime.date.today()
i przekonwertować wynikowy datetime.date
obiekt na ciąg:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
do „DMY”, separator /
do M/D/Y
i separator -
do Y-M-D
. Chociaż nie wszyscy przestrzegają tych wytycznych, pomogłoby to w czytaniu dat na arenie międzynarodowej, o ile nie wszyscy się na nie zmienili Y-M-D
.
Datetime jest po prostu piękny, jeśli lubisz pamiętać śmieszne kody. Czy nie wolisz prostoty?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Ten moduł jest wystarczająco sprytny, aby zrozumieć, co masz na myśli .
Po prostu zrób pip install arrow
.
Dodatek: W odpowiedzi na tych, którzy zastanawiają się nad tą odpowiedzią, powiem tylko, że strzałka reprezentuje jedno z alternatywnych podejść do radzenia sobie z datami w Pythonie. Właśnie to chciałem zasugerować.
print(date.today())
>> „2018-12-16”? lol i łatwo uzyskaj wartości int t.year,t.month,t.day+1
>> (2018, 12, 17) gdzie t = date.today()
i fakt, że ludzie nie muszą dzwonić zieloną strzałką, aby powiedzieć im godzinę. o Boże, to jest za dużo kodu, żeby zapamiętać ...
import datetime
różni się od import arrow
? Pewnie, że jest wbudowany, ale jeśliarrow
zapewnia wygodniejszy format, dlaczego go nie użyć?
arrow
? Ale w przypadku wielu prostych projektów jest to po prostu niepotrzebne. Ponadto w wielu wewnętrznych projektach firmy ppl musi uzyskać zgodę na włączenie nowych bibliotek.
Zawsze używam isoformat()
do tego funkcji.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Zauważ, że działa to również na obiektach datetime, jeśli potrzebujesz czasu również w standardowym formacie.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Inne odpowiedzi sugerują użycie pytona datetime.datetime
, ale jak powiedział @Bill Bell, istnieją inne biblioteki, które oferują prostsze datetime
interfejsy jako usługę lub jako część większego ekosystemu interfejsów API. Oto dwie takie biblioteki, z którymi można pracowaćdatetimes
bardzo prostą.
Możesz użyć pd.to_datetime
z biblioteki pand . Oto różne opcje w zależności od tego, co chcesz zwrócić.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Jako obiekt datetime w Pythonie
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Jako sformatowany ciąg daty
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'
Aby uzyskać tylko datę ze znacznika czasu, zadzwoń Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Poza to_datetime
tym możesz bezpośrednio tworzyć instancję Timestamp
obiektu,
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)
Jeśli chcesz, aby strefa czasowa była świadoma, przekaż strefę czasową do tz
argumentu.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Jeśli pracujesz z wahadłem , istnieje kilka interesujących opcji. Możesz uzyskać bieżący znacznik czasu używając now()
lub dzisiejszą datę używając 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'))
Dodatkowo możesz również uzyskać tomorrow()
lub yesterday()
datę bezpośrednio, bez konieczności wykonywania dodatkowej arytmetyki 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'))
Dostępne są różne opcje formatowania.
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'
Bardzo późna odpowiedź, ale możesz użyć:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Możesz użyć,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
jest jeszcze lepszy
Wolę to, ponieważ jest to proste, ale może w jakiś sposób nieefektywne i błędne. Musisz sprawdzić kod zakończenia polecenia powłoki, jeśli chcesz program silnie odporny na błędy.
os.system('date +%Y-%m-%d')