2010-01-28 2 views

Antwort

165

Die Datetime-Klasse hat eine Methode strftime. strftime() Behavior in den Python-Dokumenten dokumentiert die verschiedenen Formate, die es akzeptiert.

Für diesen spezifischen Beispiel wäre es etwas wie folgt aussehen:

my_datetime.strftime("%B %d, %Y") 
6

lesen strfrtime von den offiziellen Dokumente.

78

Hier ist, wie Sie das gleiche mit Python die Funktion allgemeine Formatierung erreichen können ...

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

die Formatierungszeichen hier verwendet sind die gleichen wie die von strftime verwendeten. Verpassen Sie nicht die führende : im Format-Spezifizierer.

Mit Format() anstelle von strftime() in den meisten Fällen kann der Code besser lesbar machen, einfacher zu schreiben und im Einklang mit der Art und Weise formatierten Ausgabe erzeugt wird ...

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

Vergleichen Sie die oben mit der folgende strftime() Alternative ...

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

Darüber hinaus gehen die folgenden nicht arbeiten ...

>>>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 

Und so weiter ...

+1

Ich frage mich, welche Vorteile format() in diesem Fall über strftime() bietet. Hat eine dieser Methoden einen anderen Vorteil als die persönliche Präferenz? Was sind die Leistungsunterschiede? – Andre

+2

@Andre Danke für Ihre Frage! Persönliche Präferenzen werden oft von Erfahrung geleitet. Bitte beachten Sie meine aktualisierte Antwort für warum ich Format() über strftime() bevorzuge. Leistung und Python sind zwei Wörter, die nicht gut zusammenpassen. Ich würde mich nicht allzu sehr mit Performance beschäftigen, wenn ich mich für Python entschieden hätte. Wenn ich Leistung brauche, verwende ich eine statisch typisierte Hochleistungssprache. –

+0

Die Formatmethode ist in den meisten Fällen einfacher. Compare: 'print 'Heute ist {:% B% d,% Y}'. Format (datetime.now())' zu 'drucken 'Heute ist {}'. Format (datetime.now(). Strftime ('% B% d,% Y ') '. Wenn Sie die format() Methode sowieso verwenden, warum nicht auch für die Datumsformatierung? – ChaimG

-1

Dies ist für Format das Datum?

def format_date(day, month, year): 
     # {} betekent 'plaats hier stringvoorstelling van volgend argument' 
     return "{}/{}/{}".format(day, month, year) 
3

sehr alte Frage, ich weiß. aber mit dem neuen f-strings (ab Python 3.6) gibt es frische Optionen. so ist hier der Vollständigkeit halber:

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() and strptime() Behavior erklärt, was die Formatbezeich bedeuten.