2016-06-29 18 views
-1

Ich versuche, freie Zeiten von einem bestimmten Zeitplan zu bekommen:Schedule Lücken in Python Datetime

167.0 01:50:48 02:09:56 
167.0 03:48:08 04:07:16 
167.0 05:45:25 06:04:32 
167.0 07:42:39 08:01:45 
167.0 08:49:05 22:16:43  
167.0 23:17:18 23:59:59 
168.0 03:11:24 03:32:05  
168.0 00:00:00 03:32:05 
168.0 05:08:25 05:29:16  
168.0 07:05:04 07:26:02 
168.0 09:00:53 23:09:45 
169.0 01:47:09 02:07:32 
169.0 00:00:00 02:07:32 
169.0 03:43:50 04:04:09  
169.0 05:40:42 06:00:59 
169.0 07:37:44 07:48:00 
169.0 09:34:55 23:59:59  
170.0 00:00:00 01:32:00 
170.0 10:37:37 23:59:59 
171.0 02:36:01 02:45:24 
171.0 00:00:00 02:45:24 
171.0 04:33:10 04:92:34 
171.0 06:30:21 06:89:47 
171.0 08:27:34 08:47:02 
171.0 10:24:49 23:59:59 
172.0 03:59:50 04:19:21  
172.0 00:00:00 04:19:21 
172.0 05:57:01 06:16:33 
172.0 07:54:14 08:13:48 
172.0 09:51:29 10:11:04 
172.0 11:48:44 23:59:59 

Wo die erste Spalte des Tag des Jahres ist, ist die mittlere Spalte die Startzeit, und die rechte Spalte ist die Endzeit.

Gibt es eine Möglichkeit, dies umzukehren, so dass für einen bestimmten Tag des Jahres die verfügbaren Zeiten zwischen 00:00:00 und 23:59:59 angezeigt werden?

+0

Also die Daten zur Verfügung gestellt ist die ausgelastete Zeit? –

Antwort

0

Nun, denken Sie an eine einfache Kalenderanwendung. Sie blocken Zeiten aus, die ungültig sind, und Ihr Kalender zeigt Ihnen diese und die Zeiten an, in denen gültig sind. Zum Glück verwenden Sie militärische Zeit, wodurch das Problem weniger kompliziert wird.

Letztendlich werden Sie mit einer Liste von Zeiten verlassen werden.

Hier ist ungefähr, wie würde ich darüber gehen, angesichts der Liste.

Verwenden Sie zuerst string.split() in jeder Zeile. Dadurch erhalten Sie eine Liste, wobei jeder Eintrag segmentiert ist.

Beginnen Sie um 00:00:00 und lesen Sie bis zum ersten gefundenen Zeitfenster, vorausgesetzt, sie sind in Ordnung.

Fügen Sie diesen Eintrag in der Liste von 00:00:00 bis zum Anfang dieses Fensters hinzu.

Vom Ende des ersten Zeitblocks bis zum Anfang des folgenden Zeitblocks lesen. Das ist ein anderes Intervall.

spülen und wiederholen, bis Sie eine Liste aller Zeiten 0.00.00 bis 23.59.59 die nicht hat ein Intervall mit ihnen verbunden zu tun.

Hilft das überhaupt?