Come faccio a trasformare un datetime python in una stringa, con data di formato leggibile?


171
t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003

Come posso trasformarlo in una stringa ?:

"January 28, 2010"

8
dt = datetime.datetime(*t[:7])

Risposte:



112

Ecco come puoi ottenere lo stesso risultato usando la funzione di formattazione generale di Python ...

>>>from datetime import datetime
>>>"{:%B %d, %Y}".format(datetime.now())

I caratteri di formattazione utilizzati qui sono gli stessi di quelli utilizzati da strftime . Non perdere il comando: di formato.

L'uso di format () anziché strftime () nella maggior parte dei casi può rendere il codice più leggibile, più facile da scrivere e coerente con il modo in cui viene generato l'output formattato ...

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now())

Confronta quanto sopra con la seguente alternativa strftime () ...

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y"))

Inoltre, il seguente non funzionerà ...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    datetime.now().strftime("%s %B %d, %Y" % "Andre")
TypeError: not enough arguments for format string

E così via...


1
Mi chiedevo quali sono i vantaggi dell'utilizzo di format () per questo caso, rispetto a strftime (). Uno dei due metodi presenta un vantaggio diverso dalle preferenze personali? Quali sono le differenze di prestazioni?
Andre

2
@Andre Grazie per la tua domanda! Le preferenze personali sono spesso guidate dall'esperienza. Si prega di vedere la mia risposta aggiornata per il motivo per cui preferisco format () rispetto a strftime (). Performance e Python sono due parole che non vanno bene insieme. Non mi preoccuperei eccessivamente delle prestazioni se avessi deciso di usare Python. Quando ho bisogno di prestazioni uso un linguaggio ad alte prestazioni tipicamente statico.
Autodidatta,

1
Il metodo di formattazione è più semplice nella maggior parte dei casi. Confronta: print 'Today is {:%B %d, %Y}'.format(datetime.now())a print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y'). Quando si utilizza comunque il metodo format (), perché non utilizzarlo anche per la formattazione della data?
ChaimG,

30

Utilizzando f-string, in Python 3.6+.

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'

Questo genera un errore di sintassi: "SyntaxError: sintassi non valida". Potresti per favore elaborare?
sajid,

Ok. Ho Python 3.5.1. È per questo. Grazie per il chiarimento.
Sajid,

21

domanda molto vecchia, lo so. ma con le nuove f-string (a partire da Python 3.6) ci sono nuove opzioni. quindi qui per completezza:

from datetime import datetime

dt = datetime.now()

# str.format
strg = '{:%B %d, %Y}'.format(dt)
print(strg)  # July 22, 2017

# datetime.strftime
strg = dt.strftime('%B %d, %Y')
print(strg)  # July 22, 2017

# f-strings in python >= 3.6
strg = f'{dt:%B %d, %Y}'
print(strg)  # July 22, 2017

strftime()e strptime()Behavior spiega cosa significano gli identificatori di formato.



10

L'oggetto datetime Python ha un attributo metodo, che viene stampato in formato leggibile.

>>> a = datetime.now()
>>> a.ctime()
'Mon May 21 18:35:18 2018'
>>> 

Questo è uno dei modi migliori, più semplici e veloci per ottenere DateTime in un formato leggibile.
Mujeeb Ishaque,

-2

Questo è per formattare la data?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.