2017-09-05 12 views
5

insertion_dateが30日より古いかどうかを知りたい。これは、現在時刻の1分1秒まで検出する必要があります。 insertion_dateの値は、APIから動的に取得されます。日付が30日以上経過しているかどうか調べる

現在のコードでは1日までしか検出されませんが、2番目までの精度が必要です。

import datetime 
import dateutil.parser 

insertion_date = dateutil.parser.parse('2017-08-30 14:25:30') 
right_now_30_days_ago = datetime.datetime.today() - datetime.timedelta(days=30) 

print right_now_30_days_ago #2017-08-31 12:18:40.040594 
print insertion_date #2017-08-30 14:25:30 

if insertion_date > right_now_30_days_ago: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
+0

文書によると、はtimedeltaは*マイクロ秒の解像度に** 2日付、時刻、または日時のインスタンス間の違いを表現する期間です***。あなたは何かが間違っています –

+0

フランコ、私はあなたの受け入れを再考するように依頼します。このユーザーは、複数の機会にコンテンツの盗聴を受けています。私はこの答えがまた別の答えから何らかの形で盗られていると確信しています。プロフィールをクリックして見てください。 –

答えて

5

from datetime import datetime, timedelta 
time_between_insertion = datetime.now() - insertion_date 

if time_between_insertion.days>30: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
3
from datetime import datetime, timedelta 

print(datetime.now()) 
datetime.datetime(2017, 9, 5, 7, 25, 37, 836117) 

print(datetime.now() - timedelta(days=30)) 
datetime.datetime(2017, 8, 6, 7, 25, 51, 723674) 

あなたがここに見ることができるように、それは秒まで正確です。

問題はdatetime.today()です。あなたはdatetime.today()の代わりにdatetime.now()を使用する必要があります。

time_since_insertion = datetime.now() - insertion_date 

if time_since_insertion.days > 30: 
    print("The insertion date is older than 30 days") 
else: 
    print("The insertion date is not older than 30 days") 

はそれが役に立てば幸い!あなたが同様の行に何かをする必要があり

関連する問題