2017-06-21 25 views
0

的時間兩個日期之間的名單上有兩次,我想使它們之間的所有時間列表,使用相同的格式在Python有在python

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

所以結果會是這樣的這個 2016-12-02T11:00:00.000Z 2016-12-02T12:00:00.000Z 2016-12-02T13:00:00.000Z .....等等 我該怎麼這麼這麼和我應該使用什麼樣的插件?

+1

'從日期時間導入timedelta'。應該有幫助。 –

+3

'from'是一個內置的單詞 – hurturk

+0

你不能減去'str'對象,使用'datetime'對象代替 –

回答

1

如果可能,我會建議使用熊貓。

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

如果你需要的字符串,然後使用以下方法:使用標準庫的​​包

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

聽起來很有趣! 但我怎樣才能下載它? – malsioufy

+1

'pip install pandas'應該做的伎倆,取決於你使用的python的平臺和版本。 –

+0

我已經下載它,它的工作原理!然而,當我打印time_range它似乎並不是一個常規列表,我怎麼能將它轉換爲列表? – malsioufy

1

簡單的解決辦法:

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)) 

會給我們

>>>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', 
...]