QDateTime.fromString - Formatierung wird offensichtlich nicht erkannt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gogo555
User
Beiträge: 6
Registriert: Sonntag 27. November 2016, 00:53

Hallo zusammen!
Python 3.5.2 / PyQt5
Kann mir jemand erklären, warum dieser Format-String nicht erkannt wird?:

Code: Alles auswählen

>>> from PyQt5.QtCore import QDateTime

>>> x = QDateTime.fromString("08.09.2017 06:07:08","dd.MM.YYYY hh:mm:ss")
>>> x
PyQt5.QtCore.QDateTime()

>>> x = QDateTime.fromString("08.09.2017 06:07:08","dd.MM.YYYY HH:mm:ss")
>>> x
PyQt5.QtCore.QDateTime()

jedoch:

>>> x = QDateTime.fromString("1.30. 1", "M.d. s")
>>> x
PyQt5.QtCore.QDateTime(1900, 1, 30, 0, 0, 1)
Danke!
g
Benutzeravatar
pixewakb
User
Beiträge: 1413
Registriert: Sonntag 24. April 2011, 19:43

Code: Alles auswählen

from PyQt5.QtCore import QDateTime

x = QDateTime.fromString("08.09.2017 06:07:08","dd.MM.yyyy hh:mm:ss")
print(x)

x = QDateTime.fromString("08.09.2017 06:07:08","dd.MM.yyyy HH:mm:ss")
print(x)


x = QDateTime.fromString("1.30. 1", "M.d. s")
print(x)
Verwende "yyyy" anstelle des "YYYY" und es sollte laufen. Du weißt, dass auch das datetime-Modul Möglichkeiten bietet einen Datumsstring umzuwandeln?
gogo555
User
Beiträge: 6
Registriert: Sonntag 27. November 2016, 00:53

boah - in der Doku sind wirklich kleine "y" - ich brauch' dringend eine Brille!

Die Konvertierung mittels datetime-Modul ist mir bekannt. Das gelieferte datetime-Objekt ist ident mit dem .QDateTime()-Objekt. Da ich aber in dem Projekt sowieso das ganze QtCore importiert habe wollte ich mir den extra Import von datetime sparen.

Code: Alles auswählen

>>> from PyQt5.QtCore import QDateTime
>>> import datetime
>>> a = QDateTime.fromString      ("08.09.2017 06:07:08", "dd.MM.yyyy HH:mm:ss")
>>> b = datetime.datetime.strptime("08.09.2017 06:07:08", "%d.%m.%Y %H:%M:%S"  )
>>> a == b
True
>>> 
... und was ich auch nicht wusste, ist, dass QDateTimeEdit.setDateTime(self, QDateTime dateTime) ein QDateTime-Objekt ODER ein dateTime-Objekt benötigt!

Vielen Dank!

g
Benutzeravatar
snafu
User
Beiträge: 6881
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Bei strenger Trennung zwischen GUI und Geschäftslogik wäre das Parsen eines Datums ein Teil der Logik. Zwecks Austauschbarkeit ist es dann schon sinnvoller, bei der Logik von datetime abhängig zu sein, weil das in der Standardbibliothek mit dabei ist. Nur mal so als Argument für datetime... ;)
Antworten