【发布时间】:2016-10-04 21:53:12
【问题描述】:
我正在从 yahoo Finance 导入日期,并希望将它们转换为一种格式,以便我可以将它们与今天进行比较,以检查日期是否在从现在起 3 到 9 个月之间。
这是我目前所拥有的:
today = time.strftime("%Y-%m-%d")
today = datetime.datetime.strptime(today, '%Y-%m-%d')
int_begin = today + datetime.timedelta(days=90)
int_end = today + datetime.timedelta(days=270)
for i in opt["Expiry"]:
transf_date = datetime.datetime.strptime(opt["Expiry"][1],'%b %d, %Y')
transf_date = datetime.datetime.strftime(transf_date,"%Y-%m-%d")
if int_begin <= transf_date and transf_date <= int_end:
print "True:",i
else:
print "False:",i
这里是opt["Expiry"]的内容
0 2017 年 1 月 20 日 2017 年 1 月 20 日 1 日 2017 年 1 月 20 日 2017 年 1 月 20 日 3 日 2017 年 1 月 20 日 4 日 2017 年 1 月 20 日 5 日 2017 年 1 月 20 日 6 日 2017 年 1 月 20 日 7 日 2017 年 1 月 20 日 8 日 2017 年 1 月 20 日 9 日 2017 年 1 月 20 日 10 日 2017 年 1 月 20 日 11 日 2017 年 1 月 20 日 12 日 2017 年 1 月 20 日 13 日 2017 年 1 月 20 日 14 日 2017 年 1 月 20 日 15 日 2017 年 1 月 20 日 16 日 2018 年 1 月 19 日 17 日 2017 年 1 月 20 日 18 日 2018 年 1 月 19 日 19 日 2017 年 1 月 20 日 2017 年 3 月 17 日 21 日 2017 年 1 月 20 日 22 日 2017 年 3 月 17 日 23 日 2017 年 1 月 20 日 24 日 2017 年 3 月 17 日 25 日 2017 年 4 月 21 日 26 日 2017 年 6 月 16 日 27 日 2018 年 1 月 19 日 28 日 2017 年 1 月 20 日 29 日 ... 432 2017 年 1 月 20 日 433 2018 年 1 月 19 日 434 2016 年 10 月 21 日 435 2017 年 1 月 20 日 436 2018 年 1 月 19 日 437 2016 年 10 月 21 日 438 2017 年 1 月 20 日 439 2018 年 1 月 19 日 440 2016 年 10 月 21 日 441 2017 年 1 月 20 日 442 2018 年 1 月 19 日 443 2016 年 10 月 21 日 444 2017 年 1 月 20 日 445 2018 年 1 月 19 日 446 2016 年 10 月 21 日 447 2017 年 1 月 20 日 448 2016 年 10 月 21 日 449 2017 年 1 月 20 日 450 2016 年 10 月 21 日 451 2017 年 1 月 20 日 452 2016 年 10 月 21 日 453 2017 年 1 月 20 日 454 2016 年 10 月 21 日 455 2017 年 1 月 20 日 456 2016 年 10 月 21 日 457 2017 年 1 月 20 日 458 2017 年 1 月 20 日 459 2017 年 1 月 20 日 460 2017 年 1 月 20 日 461 2017 年 1 月 20 日似乎我有相同的日期格式,即“%Y-%m-%d”,但我仍然没有过滤掉任何值。所有这些都是真实的,在区间内。
【问题讨论】:
-
请提供
opt["Expiry"]的内容,以便我们可以在我们自己的机器上运行您的代码并复制您的问题。 -
我正在获取选项数据。我得到的日期是从 2016 年到 2018 年,所以并不是所有的日期都应该在合适的时间间隔内。
-
似乎您在将日期转换为字符串和从字符串转换日期时跳过很多圈,以便您可以将它们以字符串形式相互比较。我建议根本不要将它们转换为字符串; datetime 对象已经具有可比性,它将为您省去很多匹配格式的麻烦。
-
顺便说一句,您只看到
opt["Expiry"][1]而没有其他任何行,因此您基本上忽略了其他 460 行。您可能应该在逻辑中使用i而不是opt["Expiry"][1]。