Seite 1 von 1
zeit differenzen
Verfasst: Mittwoch 13. Juli 2016, 21:14
von snuffel55
Hallo
Ich versuche ein Script zu schreiben bei dem die rundenzeit von Motorrad Fahren gemessen wird.
Die Fahrer müssen in jeder Runde einen rfid Chip scannen und dann wird u.a. die aktuelle Zeit in einer sqlite DB gespeichert.
Bei der nächsten Runde wird der Datensatz wieder aufgerufen und dann kommt mein Problem
Hier muss ich die gespeicherte Zeit von der aktuell gescannten Zeit abgezogen werden.
Mein Zeitstempel:
datetime.utcnow().strftime('%H%M%S%f')[:-2]
Wie kann ich den string umwandeln damit ich Zeiten damit berechnen kann
Ich Test schon 4 Tage komme aber nicht zurecht
MfG snuffel
Re: zeit differenzen
Verfasst: Mittwoch 13. Juli 2016, 21:27
von DasIch
datetime.utcnow() liefert dir einen brauchbare Zeitstempel mit dem du problemlos machen könntest was du willst, lässt sich sogar in einer SQLite Datenbank speichern, SQLite hat da extra einen Typen für. Dein Problem besteht darin dass du einen Schritt weitergehst und daraus einen String machst, mit dem man nichts sinnvolles anstellen kann. Anstatt den Fehler rückgängig zu machen, solltest du den Fehler gar nicht erst machen.
Re: zeit differenzen
Verfasst: Donnerstag 14. Juli 2016, 05:26
von snuffel55
Hallo,
Danke das du so schnell geantwortet hast, Ich habe den stamp jetzt umgestellt und mit dem Format klappt es allerdings nur probehalber, den Wert den er aus der sollte DB zieht nimmt er nicht als timestamp sondern als unicode
Wie kann ich das ändern?
Unsupported operand types for -: 'unicode' and 'datetime.datetime'
Re: zeit differenzen
Verfasst: Donnerstag 14. Juli 2016, 08:00
von Sirius3
@snuffel55: das ist ein typisches Problem mit SQLite für das es auch eine
Standardlösung gibt.
Von
hier ein kurzes Beispiel:
Code: Alles auswählen
>>> db = sqlite3.connect(':memory:', detect_types=sqlite3.PARSE_DECLTYPES)
>>> c = db.cursor()
>>> c.execute('create table foo (bar integer, baz timestamp)')
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('insert into foo values(?, ?)', (23, datetime.datetime.now()))
<sqlite3.Cursor object at 0x40fc50>
>>> c.execute('select * from foo')
<sqlite3.Cursor object at 0x40fc50>
>>> c.fetchall()
[(23, datetime.datetime(2009, 12, 1, 19, 31, 1, 40113))]
Re: zeit differenzen
Verfasst: Donnerstag 14. Juli 2016, 09:42
von BlackJack
An der Stelle möchte ich gerne SQLAlchemy in den Raum werfen, das macht das freundlicherweise schon von Haus aus.
Code: Alles auswählen
In [34]: import sqlalchemy as sa
In [35]: import datetime
In [36]: engine = sa.create_engine('sqlite:///:memory:')
In [37]: meta = sa.MetaData(bind=engine)
In [38]: foos = sa.Table('foo', meta, sa.Column('bar', sa.INT), sa.Column('baz', sa.TIMESTAMP))
In [39]: meta.create_all()
In [40]: foos.insert().values(bar=23, baz=datetime.datetime.now()).execute()
Out[40]: <sqlalchemy.engine.result.ResultProxy at 0x948cb8c>
In [41]: foos.select().execute().fetchall()
Out[41]: [(23, datetime.datetime(2016, 7, 14, 10, 40, 6, 340972))]