2017-09-05 12 views
5

मैं जानना चाहता हूं कि insertion_date 30 दिनों से अधिक पुराना है या नहीं। यह वर्तमान समय के मिनट और दूसरे को पता लगाना चाहिए। insertion_date में मान को एपीआई से गतिशील रूप से खींचा जाएगा।पता लगाएं कि कोई तिथि 30 दिन से अधिक पुरानी है

वर्तमान कोड केवल दिन तक पता लगाता है, मुझे दूसरी तक सटीकता की आवश्यकता है।

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 है * एक अवधि ** संकल्प माइक्रोसेकंड करने के लिए दो तारीख, समय, या दिनांक उदाहरणों के बीच अंतर को व्यक्त ***। , इसलिए आपके पास कुछ गलत है –

+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") 

आशा है कि यह मदद करता है!

संबंधित मुद्दे