Sto usando:
str(datetime.datetime.today()).split()[0]
per restituire la data odierna nel YYYY-MM-DDformato.
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-DDformato.
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')
datequesto è disponibile così comedatetime
È possibile utilizzare datetime.date.today()e convertire l' datetime.dateoggetto 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/Ye 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 datetimediverso da import arrow? Sicuramente uno è integrato, ma se arrowfornisce 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 datetimeinterfacce più semplici come servizio o come parte di un più ampio ecosistema di API. Ecco due di queste librerie che rendono datetimesmolto semplice lavorare con .
Puoi usare pd.to_datetimedalla 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 Timestampoggetto 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 tzall'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')