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

Code: Alles auswählen

datetime.datetime.now().isoformat()
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.
  1. 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!
  2. 5 Jahre lang nichts in Python gemacht. Die grauen Zellen haben soooo viel vergessen :? An dem Projekt will ich lernen
  3. 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.