2017-06-21 12 views
0

Ich habe zwei Mal und ich möchte eine Liste aller Stunden, um zwischen ihnen mit dem gleichen Format in Pythoneine Liste der Stunden zwischen zwei Daten in Python

from= '2016-12-02T11:00:00.000Z' 
to= '2017-06-06T07:00:00.000Z' 
hours=to-from 

so das Ergebnis sein wird, so etwas wie dies 2016-12-02T11: 00: 00.000Z 2016-12-02T12: 00: 00.000Z 2016-12-02T13: 00: 00.000Z ..... und so weiter Wie kann ich so dies und Welche Art von Plugin sollte ich verwenden?

+1

'von Datetime Zeitdelta importieren. Sollte hilfreich sein. –

+3

'from' ist ein eingebautes Wort – hurturk

+0

Sie können' str' Objekte nicht subtrahieren, stattdessen 'datetime' Objekte verwenden –

Antwort

1

Wenn möglich, würde ich Pandas empfehlen.

import pandas 
time_range = pandas.date_range('2016-12-02T11:00:00.000Z', '2017-06-06T07:00:00.000Z', freq='H') 

Wenn Sie Strings müssen Sie dann wie folgt:

timestamps = [str(x) + 'Z' for x in time_range] 
# Output 
# ['2016-12-02 11:00:00+00:00Z', 
# '2016-12-02 12:00:00+00:00Z', 
# '2016-12-02 13:00:00+00:00Z', 
# '2016-12-02 14:00:00+00:00Z', 
# '2016-12-02 15:00:00+00:00Z', 
# '2016-12-02 16:00:00+00:00Z', 
# ...] 
+0

klingt interessant und einfach! aber wie kann ich es herunterladen? – malsioufy

+1

'pip installieren pandas' sollte den Trick tun, je nachdem, welche Plattform und Version von Python Sie verwenden. –

+0

Ich habe es heruntergeladen und es funktioniert! aber wenn ich time_range drucke, scheint es keine reguläre Liste zu sein, wie kann ich es in eine Liste konvertieren?! – malsioufy

1

einfachere Lösung der Standardbibliothek datetime Paket mit:

from datetime import datetime, timedelta 

DATE_TIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ' 

from_date_time = datetime.strptime('2016-12-02T11:00:00.000Z', 
            DATE_TIME_STRING_FORMAT) 
to_date_time = datetime.strptime('2017-06-06T07:00:00.000Z', 
           DATE_TIME_STRING_FORMAT) 

date_times = [from_date_time.strftime(DATE_TIME_STRING_FORMAT)] 
date_time = from_date_time 
while date_time < to_date_time: 
    date_time += timedelta(hours=1) 
    date_times.append(date_time.strftime(DATE_TIME_STRING_FORMAT)) 

wird uns

>>>date_times 
['2016-12-02T11:00:00.000000Z', 
'2016-12-02T12:00:00.000000Z', 
'2016-12-02T13:00:00.000000Z', 
'2016-12-02T14:00:00.000000Z', 
'2016-12-02T15:00:00.000000Z', 
'2016-12-02T16:00:00.000000Z', 
'2016-12-02T17:00:00.000000Z', 
'2016-12-02T18:00:00.000000Z', 
'2016-12-02T19:00:00.000000Z', 
'2016-12-02T20:00:00.000000Z', 
...] 
Verwandte Themen