यह स्थिति हमेशा मूल्यांकन करती है Trueभले ही यह उसी दिन हो क्योंकि यह समय की तुलना कर रहा है।
from datetime import datetime
# ...
if date_num_posts < datetime.today():
अगर कोई तारीख उसी दिन है तो मैं कैसे जांच सकता हूं datetime.today()?
जवाबों:
यदि आप तारीखों की तुलना करना चाहते हैं,
yourdatetime.date() < datetime.today().date()
या, जाहिर है,
yourdatetime.date() == datetime.today().date()
यदि आप जांचना चाहते हैं कि वे एक ही तारीख हैं।
प्रलेखन आमतौर पर सहायक होता है। यह आमतौर पर के लिए पहला Google परिणाम भी है python thing_i_have_a_question_about। जब तक आपका प्रश्न "साँप" नामक एक फ़ंक्शन / मॉड्यूल के बारे में नहीं है।
मूल रूप से, datetimeमॉड्यूल में एक समय में एक भंडारण के लिए तीन प्रकार होते हैं:
date वर्ष के लिए, महीने, महीने के दिनtime घंटे, मिनट, सेकंड, माइक्रोसेकंड, समय क्षेत्र की जानकारी के लिएdatetimeतारीख और समय को जोड़ती है। इसकी विधियाँ हैं date()और time()इसी dateऔर timeवस्तुओं को प्राप्त करने के लिए , और combineसंयोजन dateऔर timeमें एक आसान कार्य है datetime।यदि आपको निम्नलिखित कोड का उपयोग करने की तुलना में केवल महीने के मूल्य के दिन की तुलना करने की आवश्यकता है:
if yourdate.day == datetime.today().day:
# do something
यदि आपको यह जांचने की आवश्यकता है कि दो तिथियों के बीच का अंतर स्वीकार्य है तो आप टाइमडेल्टा का उपयोग कर सकते हैं :
if (datetime.today() - yourdate).days == 0:
#do something
और अगर आप केवल तारीख के भाग की तुलना करना चाहते हैं, तो आप केवल इसका उपयोग कर सकते हैं:
from datetime import datetime, date
if yourdatetime.date() < datetime.today().date()
# do something
ध्यान दें कि समयसीमा के निम्नलिखित प्रारूप हैं:
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
तो आप दिन, सेकंड, मिसे, मिनट और इतने पर जाँच करने में सक्षम हैं कि आपको वास्तव में क्या चाहिए:
from datetime import datetime
if (datetime.today() - yourdate).days == 0:
#do something
आपके मामले में जब आपको यह जांचने की आवश्यकता होती है कि दो तारीखें समान हैं तो आप टाइमडेल्टा (0) का उपयोग कर सकते हैं:
from datetime import datetime, timedelta
if (datetime.today() - yourdate) == timedelta(0):
#do something
.dayमहीने का है। इसलिए 12 अगस्त को कोड के अपने पहले स्निपेट का उपयोग करके "बराबर" 12 दिसंबर है। ओपी चाहता है कि शायद यह व्यवहार नहीं है।
आप अपनी पसंद के अनुसार घंटे, मिनट, सेकंड और माइक्रोसेकंड सेट कर सकते हैं
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
लेकिन trutheality का जवाब शायद सबसे अच्छा है जब वे कर रहे हैं सब शून्य होने के लिए और तुम सिर्फ तुलना कर सकते हैं .date()समय की रों
हो सकता है कि यह तेजी से हो अगर आपको सैकड़ों डेटासेट की तुलना करनी है क्योंकि आपको केवल replace()एक बार बनाम सैकड़ों कॉल करने की आवश्यकता हैdate()
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])
किसी को उपयोग करने की तुलना करनी चाहिए .date(), लेकिन मैं इस विधि को एक उदाहरण के रूप में छोड़ता हूं, जब कोई चाहता था, उदाहरण के लिए, महीने या मिनट आदि से चीजों की तुलना करें।