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