826 Stimmen

Wie drucke ich ein Datum in einem normalen Format?

Dies ist mein Code:

import datetime
today = datetime.date.today()
print(today)

Dies wird gedruckt: 2008-11-22 Das ist genau das, was ich will.

Aber ich habe eine Liste, an die ich das anhänge, und dann geht plötzlich alles "schief". Hier ist der Code:

import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print(mylist)

Es wird Folgendes ausgedruckt:

[datetime.date(2008, 11, 22)]

Wie kann ich nur ein einfaches Datum wie 2008-11-22 ?

17 Stimmen

Die kurze Antwort: Durch die Anwendung str() (zu jedem Element der Liste), denn das ist genau das, was print stillschweigend mit Ihrem Solo gemacht today Objekt.

1 Stimmen

31voto

Waqas Ali Punkte 1331
# convert date time to regular format.

d_date = datetime.datetime.now()
reg_format_date = d_date.strftime("%Y-%m-%d %I:%M:%S %p")
print(reg_format_date)

# some other date formats.
reg_format_date = d_date.strftime("%d %B %Y %I:%M:%S %p")
print(reg_format_date)
reg_format_date = d_date.strftime("%Y-%m-%d %H:%M:%S")
print(reg_format_date)

OUTPUT

2016-10-06 01:21:34 PM
06 October 2016 01:21:34 PM
2016-10-06 13:21:34

28voto

b1_ Punkte 2049

Oder sogar

from datetime import datetime, date

"{:%d.%m.%Y}".format(datetime.now())

Aus: '25.12.2013

o

"{} - {:%d.%m.%Y}".format("Today", datetime.now())

Aus: 'Heute - 25.12.2013'

"{:%A}".format(date.today())

Aus: 'Mittwoch'

'{}__{:%Y.%m.%d__%H-%M}.log'.format(__name__, datetime.now())

Out: '__main____2014.06.09__16-56.log'

20voto

Flame of udun Punkte 2056

Einfache Antwort -

datetime.date.today().isoformat()

10voto

handle Punkte 5667

Mit typspezifischen datetime String-Formatierung (siehe nk9's Antwort mit str.format() .) in einer Formatiertes String-Literal (seit Python 3.6, 2016-12-23):

>>> import datetime
>>> f"{datetime.datetime.now():%Y-%m-%d}"
'2017-06-15'

Die Anweisungen für das Datums-/Zeitformat sind nicht als Teil der Format String Syntax sondern vielmehr in date , datetime y time 's strftime() Dokumentation. Sie basieren auf dem C-Standard von 1989, enthalten aber seit Python 3.6 einige ISO 8601-Direktiven.

1 Stimmen

Bitte beachten Sie, dass ich diese Informationen auch in die akzeptierten Dokumente aufgenommen habe. Antwort .

0 Stimmen

Strftime enthält eigentlich keine "ISO 8601-Ausgabe". Es gibt zwar "Direktiven", aber nur für bestimmte Token wie "Wochentag", nicht für einen ganzen ISO 8601-Zeitstempel, was ich schon immer ärgerlich fand.

0 Stimmen

f"{datetime.datetime.now().astimezone():%Y-%m-%dT%H:%M:%S.%f‌​}"[:-3]+f"{datetime.‌​datetime.now().astim‌​ezone():%z}" um auch Millisekunden und die Zeitzone einzubeziehen

8voto

rickydj Punkte 600

Ich hasse die Idee, aus Bequemlichkeit zu viele Module zu importieren. Ich würde lieber mit dem verfügbaren Modul arbeiten, das in diesem Fall ist datetime anstatt ein neues Modul aufzurufen time .

>>> a = datetime.datetime(2015, 04, 01, 11, 23, 22)
>>> a.strftime('%Y-%m-%d %H:%M')
'2015-04-01 11:23'

1 Stimmen

Ich denke, es wäre effizienter, dies in einer einzigen Codezeile zu tun, indem man a = datetime.datetime(2015, 04, 01, 23, 22).strftime('%Y-%m-%d %H:%M)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X