2017-09-11 1 views
1

Ich habe eine Liste von Strings, und einer von ihnen sieht wie folgt aus:Inkrementiere Zeiten, wenn sich das Datum geändert hat?

'Thu Jun 18 19:58:02 2015 
...many lines of data... 
txup: 19:59:47 txdown: 20:05:22 
rxup: 21:43:17 rxdown: 22:13:01' 

Aber andere wie folgt aussehen:

'Fri Jun 19 23:12:12 2015 
...many lines of data... 
txup: 23:39:47 txdown: 23:57:22 
rxup: 00:01:17 rxdown: 01:13:01' 

Wie Sie sehen können, in einigen Fällen eine Zeit, vielleicht kreuzen Mitternacht. Wenn dies passiert, würde das Datum, das mit dieser Zeit verbunden ist, jetzt Jun 20 statt Jun 19 sein.

Ich muss einen Code schreiben, der die 'Rxup' Zeit mit dem Datum/Uhrzeit vergleicht am Anfang der Zeichenfolge und erkennt, ob und wann es um einen Tag erhöht, weil es Mitternacht (alles relativ zu dem Datum/der Zeit am Anfang) vergangen ist.

Wenn es Mitternacht nicht passiert hat und somit am selben Tag ist, dann bin ich fertig. Aber wenn es Mitternacht überschritten hat, muss ich den Unterschied zwischen dieser Zeit und der Zeit am Anfang wahrscheinlich als ein Timedelta-Objekt nehmen und dieses Inkrement zu einer Kopie der Zeit am Anfang hinzufügen. Wie würde ich das tun?

+0

Oh, mein Geburtstag, Nyan!^_ ^ – bipll

Antwort

1

Wenn die Zeiten monoton wachsen, können Sie sie einfach in lexikographischer Reihenfolge vergleichen. '00: 01: 17 'ist offensichtlich kleiner als '23: 39: 47', so dass jedes Mal, wenn der nächste Zeitstempel kleiner als der aktuelle ist, das Datum erhöht wird.

1

dass rxup Unter der Annahme, erscheint immer nach txdown, aber weniger als 24 Stunden später, können Sie es wie unten vergleichen:

# txdown, rxup - datetimes with respective times, date part doesn't matters 
# associated_date - datetime associated with string 
if rxup.time() < txdown.time(): 
    associated_date += datetime.timedelta(days=1) 
Verwandte Themen