2017-06-21 12 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', 
...]