Python 无法获取正确的时间戳范围

Python 无法获取正确的时间戳范围,python,pandas,Python,Pandas,我希望生成一系列时间戳,介于: 2014年10月6日18:00(美国东部时间) 同时400秒后,间隔大小为2.2秒 获取开始和结束日期: 当我执行以下操作时: start_time = datetime.datetime(year = 2014, month = 10, day = 6, hour

我希望生成一系列时间戳,介于:

2014年10月6日18:00(美国东部时间)

同时400秒后,间隔大小为
2.2

获取开始和结束日期: 当我执行以下操作时:

start_time = datetime.datetime(year  = 2014, 
                               month = 10, 
                               day   = 6, 
                               hour  = 18, 
                               tzinfo = pytz.timezone('US/Eastern'))
end_time   = start_time + datetime.timedelta(seconds=400)
有些东西似乎失败了:

  • start\u time.isoformat()
    返回
    '2014-10-06T18:06:40-04:56'
  • end\u time.isoformat()
    返回
    '2014-10-06T18:06:40-04:56'
请注意,上述两个时间戳的时区偏移为:
-04:56
(4小时56分钟),即使EST比UTC晚5小时

获取时间范围: 向前看,如果我尝试每隔
2.2秒
(即
2200毫秒
)获取这两个日期之间的时间戳范围:

我得到:

> ts[0]
Timestamp('2014-10-06 18:56:00-0400', tz='US/Eastern', offset='2200L')
换句话说:

> ts[0].isoformat()
'2014-10-06T18:56:00-04:00'
这也没有意义(请注意时间是
18:56
,尽管我要求获得介于
18:00
18:06:40
(即
18:00
之后的
400
秒)之间的范围
import dateutil.parser作为解析器
导入日期时间
start_time=parser.parse(“美国东部时间2015年10月6日18:00”)
结束时间=开始时间+日期时间.timedelta(秒=400)
间隔=datetime.timedelta(秒=2.2)
当前时间=开始时间
当前时间<结束时间:
当前时间+=间隔
打印当前时间

但是我可能不明白您的问题是什么

我已经厌倦了处理Python笨拙的日期时间实现(特别是在时区方面),并且已经开始使用crsmithdev.com/arrow。使用此库的解决方案:

import arrow

start_time = arrow.get(2014, 10, 6, tzinfo='US/Eastern')
end_time = start_time.replace(seconds=400)

print start_time.isoformat()
print end_time.isoformat()

# alternate form

start_time = arrow.get('2014-10-06T18:00:00.000-04:00')
end_time = start_time.replace(seconds=400)

print start_time.isoformat()
print end_time.isoformat()

# get a datetime from an arrow object
start_time_dt = start_time.datetime

问题是什么?你期望什么?你得到的与你期望的有什么不同?@JoranBeasley我用答案更新了OP。我厌倦了处理Python笨拙的datetime实现(特别是在时区方面),并已开始使用.YMMV.Thank--是否有任何方法将对象转换回
datetime
(或
pd.date\u range
接受的任何其他内容)?
import dateutil.parser as parser
import datetime
start_time = parser.parse("06/Oct/2015 18:00 EST")
end_time  = start_time + datetime.timedelta(seconds=400)
interval = datetime.timedelta(seconds=2.2)
current_time = start_time
while current_time < end_time:
     current_time += interval
     print current_time
import arrow

start_time = arrow.get(2014, 10, 6, tzinfo='US/Eastern')
end_time = start_time.replace(seconds=400)

print start_time.isoformat()
print end_time.isoformat()

# alternate form

start_time = arrow.get('2014-10-06T18:00:00.000-04:00')
end_time = start_time.replace(seconds=400)

print start_time.isoformat()
print end_time.isoformat()

# get a datetime from an arrow object
start_time_dt = start_time.datetime