Sto usando:
str(datetime.datetime.today()).split()[0]
per restituire la data odierna nel YYYY-MM-DD
formato.
C'è un modo meno grezzo per raggiungere questo obiettivo?
Sto usando:
str(datetime.datetime.today()).split()[0]
per restituire la data odierna nel YYYY-MM-DD
formato.
C'è un modo meno grezzo per raggiungere questo obiettivo?
Risposte:
Puoi usare strftime :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Inoltre, per chiunque cerchi anche un'ora, minuti e secondi a zero, alla fine: (Commento di 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
questo è disponibile così comedatetime
È possibile utilizzare datetime.date.today()
e convertire l' datetime.date
oggetto risultante in una stringa:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
su "DMY", il separatore /
su M/D/Y
e il separatore -
su Y-M-D
. Sebbene non tutti seguano queste linee guida, aiuterebbe a leggere le date a livello internazionale purché non tutti siano passati a Y-M-D
.
Il datetime è semplicemente adorabile se ti piace ricordare codici divertenti. Non preferiresti la semplicità?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Questo modulo è abbastanza intelligente da capire cosa intendi .
Fallo e basta pip install arrow
.
Addendum: In risposta a coloro che si esercitano su questa risposta, lasciatemi dire che la freccia rappresenta uno degli approcci alternativi per gestire le date in Python. Questo è principalmente ciò che intendevo suggerire.
print(date.today())
>> "2018-12-16" ?? lol e ottieni facilmente i valori int t.year,t.month,t.day+1
>> (2018, 12, 17) dove t = date.today()
e il fatto che le persone non devono chiamare la freccia verde per dire loro l'ora. oddio questo è troppo codice da ricordare ...
import datetime
diverso da import arrow
? Sicuramente uno è integrato, ma se arrow
fornisce un formato più conveniente, allora perché non utilizzarlo?
arrow
? Ma, per molti progetti semplici, è semplicemente superfluo. Inoltre, in molti progetti interni all'azienda, i ppl devono ottenere l'approvazione per l'inclusione di nuove librerie.
Uso sempre la isoformat()
funzione per questo.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Nota che questo funziona anche su oggetti datetime se hai bisogno anche dell'ora in formato standard.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Altre risposte suggeriscono l'uso di Python datetime.datetime
, ma come diceva @Bill Bell, ci sono altre librerie che offrono datetime
interfacce più semplici come servizio o come parte di un più ampio ecosistema di API. Ecco due di queste librerie che rendono datetimes
molto semplice lavorare con .
Puoi usare pd.to_datetime
dalla biblioteca dei panda . Qui ci sono varie opzioni, a seconda di cosa vuoi restituire.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Come oggetto datetime python ,
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Come una stringa di data formattata,
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'
Per ottenere solo la data dal timestamp, chiama Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
A parte to_datetime
, puoi istanziare direttamente un Timestamp
oggetto 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)
Se vuoi rendere consapevole il tuo fuso orario di Timestamp, passa un fuso orario tz
all'argomento.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Se lavori con il pendolo , ci sono alcune scelte interessanti. È possibile ottenere il timestamp corrente utilizzando now()
o la data di oggi utilizzando 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'))
Inoltre, è anche possibile ottenere tomorrow()
o yesterday()
's data direttamente senza dover fare alcuna aritmetica timedelta aggiuntivo.
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'))
Sono disponibili varie opzioni di formattazione.
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'
Risposta molto tardi, ma puoi usare:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Puoi usare,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
è ancora meglio
Preferisco questo, perché questo è semplice, ma forse in qualche modo inefficiente e difettoso. È necessario controllare il codice di uscita del comando shell se si desidera un programma fortemente a prova di errore.
os.system('date +%Y-%m-%d')