यदि डेट डेटटाइम.ऑडे () के समान है तो मैं कैसे जांच सकता हूं?


88

यह स्थिति हमेशा मूल्यांकन करती है Trueभले ही यह उसी दिन हो क्योंकि यह समय की तुलना कर रहा है।

from datetime import datetime

# ...

if date_num_posts < datetime.today(): 

अगर कोई तारीख उसी दिन है तो मैं कैसे जांच सकता हूं datetime.today()?

जवाबों:


169

यदि आप तारीखों की तुलना करना चाहते हैं,

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।

2
"यह आमतौर पर पायथन चीज़_i_have_a_question_about के लिए पहला Google परिणाम है" और जब तक किसी ने इस विषय पर SO प्रविष्टि नहीं की है, जैसे कि यह यहाँ हुआ :)
— गतिविधि को कम करना

37
  • यदि आपको निम्नलिखित कोड का उपयोग करने की तुलना में केवल महीने के मूल्य के दिन की तुलना करने की आवश्यकता है:

    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

1
.dayमहीने का है। इसलिए 12 अगस्त को कोड के अपने पहले स्निपेट का उपयोग करके "बराबर" 12 दिसंबर है। ओपी चाहता है कि शायद यह व्यवहार नहीं है।
— सच्चाई

@trutheality - हाँ, मैंने अपना जवाब लिखना शुरू कर दिया है इससे पहले कि प्रश्न को संपादित किया गया है, इसलिए मुझे समझ में नहीं आ रहा था कि उसे वास्तव में क्या चाहिए, इसीलिए मैं इसके लिए कई विकल्प प्रदान करता
— हूं

1
क्विक नोट: डेटाइम ऑब्जेक्ट में एक विशेषता होती है जिसे 'डे' (नो 's') कहा जाता है और टाइमडेल्टा ऑब्जेक्ट में 'दिन' नामक एक विशेषता होती है (यदि 's' के साथ) लोग अपने आप को इस बात से अनभिज्ञ पाते हैं कि उनका सिंटैक्स काम क्यों नहीं कर रहा है।
— कोल्टन हिक्स

3

आप अपनी पसंद के अनुसार घंटे, मिनट, सेकंड और माइक्रोसेकंड सेट कर सकते हैं

datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)

लेकिन trutheality का जवाब शायद सबसे अच्छा है जब वे कर रहे हैं सब शून्य होने के लिए और तुम सिर्फ तुलना कर सकते हैं .date()समय की रों

हो सकता है कि यह तेजी से हो अगर आपको सैकड़ों डेटासेट की तुलना करनी है क्योंकि आपको केवल replace()एक बार बनाम सैकड़ों कॉल करने की आवश्यकता हैdate()


अगर यह उत्परिवर्तन शामिल नहीं था, तो मैं इसके लिए वोट करूंगा। हालाँकि आप इस विधि को अनुकूलित कर सकते हैं कि आप जिस समतुल्य वस्तुओं की तुलना कर रहे हैं, उसका एक क्लोन बनाकर, फिर उप-दिन रिज़ॉल्यूशन वाले फ़ील्ड्स को हटाकर उन्हें संशोधित करें, फिर प्रतियों की तुलना करें।
— निंजाजेको

1
@ निंजा, यह म्यूट नहीं करता है। प्रतिस्थापित () एक नया डेटाटाइम ऑब्जेक्ट लौटाता है, जैसे str.replace () करता है
— जॉन ला रोय

2
all(getattr(someTime,x)==getattr(today(),x) for x in ['year','month','day'])

किसी को उपयोग करने की तुलना करनी चाहिए .date(), लेकिन मैं इस विधि को एक उदाहरण के रूप में छोड़ता हूं, जब कोई चाहता था, उदाहरण के लिए, महीने या मिनट आदि से चीजों की तुलना करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.