2016-10-04 3 views
0

私はyahoo financeから日付をインポートしていますので、今日の日付と比較して3から9ヶ月後の日付であるかどうかを確認することができます。ここで日付が特定の間隔のPythonであるかどうかをチェックするには?

は、私がこれまで持っているものである:ここでは

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 

はオプトの内容[「有効期限」]

 
0  Jan 20, 2017 
1  Jan 20, 2017 
2  Jan 20, 2017 
3  Jan 20, 2017 
4  Jan 20, 2017 
5  Jan 20, 2017 
6  Jan 20, 2017 
7  Jan 20, 2017 
8  Jan 20, 2017 
9  Jan 20, 2017 
10  Jan 20, 2017 
11  Jan 20, 2017 
12  Jan 20, 2017 
13  Jan 20, 2017 
14  Jan 20, 2017 
15  Jan 20, 2017 
16  Jan 20, 2017 
17  Jan 19, 2018 
18  Jan 20, 2017 
19  Jan 19, 2018 
20  Jan 20, 2017 
21  Mar 17, 2017 
22  Jan 20, 2017 
23  Mar 17, 2017 
24  Jan 20, 2017 
25  Mar 17, 2017 
26  Apr 21, 2017 
27  Jun 16, 2017 
28  Jan 19, 2018 
29  Jan 20, 2017 
      ...  
432 Jan 20, 2017 
433 Jan 19, 2018 
434 Oct 21, 2016 
435 Jan 20, 2017 
436 Jan 19, 2018 
437 Oct 21, 2016 
438 Jan 20, 2017 
439 Jan 19, 2018 
440 Oct 21, 2016 
441 Jan 20, 2017 
442 Jan 19, 2018 
443 Oct 21, 2016 
444 Jan 20, 2017 
445 Jan 19, 2018 
446 Oct 21, 2016 
447 Jan 20, 2017 
448 Oct 21, 2016 
449 Jan 20, 2017 
450 Oct 21, 2016 
451 Jan 20, 2017 
452 Oct 21, 2016 
453 Jan 20, 2017 
454 Oct 21, 2016 
455 Jan 20, 2017 
456 Oct 21, 2016 
457 Jan 20, 2017 
458 Jan 20, 2017 
459 Jan 20, 2017 
460 Jan 20, 2017 
461 Jan 20, 2017 

である私が "同じ日付フォーマットを、持っているように思えます%Y-%m-%d "が表示されますが、まだフィルタリングされた値はありません。彼らのすべては真実のように出てきて、その間隔の中にいます。

+1

独自のマシンでコードを実行して問題を再現できるように、 'opt [" Expiry "]'の内容を提供してください。 – Kevin

+0

私はオプションのデータを取得しています。私は2016年から2018年の日付を取得していますので、それらのすべてが適切な間隔である必要はありません。 – VincFort

+0

文字列の中で日付を文字列に変換するために、文字列で日付を文字列と比較できるように、たくさんのフープをジャンプしているようです。私は文字列に変換しないことをお勧めします。 datetimeオブジェクトはすでに比較可能であり、フォーマットが一致するまでに多くの時間を節約できます。 – Kevin

答えて

1

transf_date = datetime.datetime.strptime(opt["Expiry"][i],'%b %d, %Y')の代わりにtransf_date = datetime.datetime.strptime(opt["Expiry"][1],'%b %d, %Y')を使用しています。つまり、opt["Expiry"]全体を繰り返していても、常に同じエントリを処理しています。

+0

ありがとう、ちょうど私のコードを読んでそれを考え出した! – VincFort

関連する問題