Seite 1 von 1
Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 15:28
von hans
wieso bekomme ich das nicht hin? Ich möchte eine Funktion schreiben, welche die aktuelle Zeit als String im Format 'hh:mm:ss' zurück gibt. Habe die Doku zu datetime bestimmt schon dreimal durchgewühlt mit niederschmetterndem Ergebnis.Die Ausgabe von
ist mir einfach zu lang. strftime() will einen Integer haben!
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 15:43
von BlackJack
@hans: Die `strftime()`-Methode auf `datetime.datetime`-Objekten will sicher keine ganze Zahl haben sondern nur die Formatzeichenkette. Apropos Formatzeichenkette: der Typ implementiert `__format__()`, funktioniert also auch mit der `format()`-Funktion oder der `format()`-Methode auf Zeichenketten.
Code: Alles auswählen
In [7]: from datetime import datetime as DateTime
In [8]: DateTime.now().strftime('%H:%M:%S')
Out[8]: '16:42:23'
In [9]: format(DateTime.now(), '%H:%M:%S')
Out[9]: '16:42:49'
In [10]: '{0:%H:%M:%S}'.format(DateTime.now())
Out[10]: '16:43:13'
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 17:46
von hans
@BlackJack: wieso geht das bei dir so einfach? Was habe ich nicht alles versucht. Klappt auf Anhieb.
noch kurze Frage zu den Eltern. Ich habe folgende Konstruktion (nur Codeausschnitte)
Hauptanwendung
Code: Alles auswählen
class SQLiteGUI_CLA(QtGui.QDialog):
def __init__(self):
super(SQLiteGUI_CLA, self).__init__()
loadUi('SQLiteGUI.ui', self)
self.DB =sqliteassistdb.Sql_CLA()
self.__debug = 9 # Debuglevel
# 0 error
# 3 warning
# 6 info
# 9 blablabla
self.__date = None
self.DB.setParent(self)
:
:
:
def debugMessage(self,debugLevel,s):
if self.__date != self.today():
self.__date = self.today()
self.plainTextEditLog.appendPlainText(
self.__date.isoformat())
if debugLevel <= self.__debug:
self.plainTextEditLog.appendPlainText(
format(DateTime.now(), '%H:%M:%S') + ' : ' + s
Die Klasse Sql_CLA ist von QObject abgeleitet. Dort rufe ich debugMeassage wie folgt auf
Code: Alles auswählen
self.parent().debugMessage(6, 'Database Name set to: ' + self.__dbName)
Es läuft. Meine Frage ist nur, ist das übliche Praxis oder begebe ich mich irgendwie auf's Glatteis?
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 17:59
von Sirius3
@hans: Doppelunterstriche bei Attributen ist in Deinem Fall unsinnig. Was macht denn die Methode today und was hat die in der Klasse SQLiteGUI_CLA zu suchen? Für das Loggen von Meldungen gibt es das logging-Modul. Die Datenbankklasse sollte eigentlich nichts von der GUI brauchen.
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 18:07
von hans
Ich logge in diesem Fall nicht in eine Datei sondern in eine plainTextBox. Werde das auch noch an anderer Stelle benötigen
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 18:32
von Sirius3
@hans: gerade weil Du das Logging an vielen Stellen brauchst, ist es wichtig, das Du den Standard einsetzt. Don't Reinvent The Wheel.
Re: Aktuelle Zeit als String
Verfasst: Dienstag 5. April 2016, 20:13
von hans
@Sirius3, dann will ich mal offenbaren was ich hier warum treibe.
- kein Job und deshalb viel Zeit und kein Selbstwertgefühl. Auf Grund meines Alters ist auch nichts mehr in Sicht. Die Lösung eines Problems baut auf!
- 5 Jahre lang nichts in Python gemacht. Die grauen Zellen haben soooo viel vergessen
An dem Projekt will ich lernen
- Was soll es werden? Es soll eine grafische Oberfläche werden um SQLite Datenbanken zu verwalten.
Tabellensrtuktur erstellen / ändern, Datenbank anlegen, Tabellen abfragen, Indexe erstellen, etc.
Abfragen drucken / speichern / exportieren
Ja gibt es alles schon, aber irgendwo muss ich ja anfangen und in Datenbanken kenne ich mich halbwegs aus. Und Fehlermeldungen möchte ich sofort sehen, besonders die SQL basierten.
Der Hinweis mit dem logging ist allerdings gut. Wird hoffentlich nicht mein einziges Projekt bleiben.
Re: Aktuelle Zeit als String
Verfasst: Mittwoch 6. April 2016, 11:33
von __deets__
Das Python-logging Modul hat (in all seiner Javaesken Schoenheit

) ja den Vorteil, dass du selbst Handler bauen kannst. Das heisst du kannst es ein eine Datei laufen lassen, aber per Konfiguration auch problemlos in ein dezidiertes Fenster. Die Investition lohnt also doppelt.