ডেটটাইম.টোডে () হিসাবে একই তারিখ একই দিন কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


89

এই শর্তটি সর্বদা Trueএকই দিন হলেও মূল্যায়ণ করে কারণ এটি সময়ের তুলনা করে।

from datetime import datetime

# ...

if date_num_posts < datetime.today(): 

তারিখ একই দিন হয় কিনা তা আমি কীভাবে পরীক্ষা করতে পারি datetime.today()?

উত্তর:


176

আপনি যদি কেবল তারিখগুলি তুলনা করতে চান,

yourdatetime.date() < datetime.today().date()

বা, স্পষ্টতই,

yourdatetime.date() == datetime.today().date()

আপনি যদি পরীক্ষা করতে চান যে তারা একই তারিখ।

ডকুমেন্টেশন সাধারণত সহায়ক। এছাড়া সাধারণত প্রথম গুগল ফল python thing_i_have_a_question_about। আপনার প্রশ্নটি "সাপ" নামের কোনও ফাংশন / মডিউল সম্পর্কে না হলে।

মূলত, datetimeসময়টিতে একটি পয়েন্ট সংরক্ষণের জন্য মডিউলটির তিন প্রকার রয়েছে:

  • date বছর, মাস, মাসের দিন
  • time ঘন্টা, মিনিট, সেকেন্ড, মাইক্রোসেকেন্ডস, সময় অঞ্চল সম্পর্কিত তথ্যের জন্য
  • datetimeতারিখ এবং সময় একত্রিত। এটি সম্পর্কিত এবং অবজেক্টগুলি পাওয়ার পদ্ধতি রয়েছে date()এবং একত্রিত করার জন্য এবং এর মধ্যে একটি কার্যকরী ফাংশন রয়েছে ।time()datetimecombinedatetimedatetime

4
"এটি অজগর জিনিস_আই_হ্যাভ_এ_কুইশন_বাউট সম্পর্কে সাধারণত গুগল ফলাফল" এবং যদি কেউ এই বিষয়টিতে এসও এন্ট্রি না করে তবে এখানে যেমন ঘটেছে :)
ক্রিয়াকলাপ হ্রাস

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

4
.dayমাসের দিন। সুতরাং 12 ই ডিসেম্বর আপনার প্রথম স্নিপেট কোড ব্যবহার করে 12 ডিসেম্বর "সমান"। ওপি সম্ভবত আচরণটি নয়।
ট্রুথিলিটি

@ তৃতীয়তা - হ্যাঁ, প্রশ্ন সম্পাদনার আগে আমি আমার উত্তর লিখতে শুরু করেছিলাম, সুতরাং তার ঠিক কী প্রয়োজন তা আমি বুঝতে সক্ষম
হলাম না,

4
তাত্ক্ষণিক দ্রষ্টব্য: ডেটটাইম অবজেক্টগুলির 'দিন' (কোনও 'গুলি' নয়) নামে একটি বৈশিষ্ট্য রয়েছে এবং টাইমডেল্টা অবজেক্টগুলিতে 'দিন' (একটি 's' সহ) নামক একটি বৈশিষ্ট্য রয়েছে যদি লোকেরা তাদের সিনট্যাক্সটি কেন কাজ করে না তা নিয়ে বিভ্রান্ত হয় find
কল্টন হিকস

3

আপনি নিজের পছন্দ অনুযায়ী ঘন্টা, মিনিট, সেকেন্ড এবং মাইক্রোসেকেন্ডগুলি সেট করতে পারেন

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

তবে ট্রুথিয়েলিটির উত্তর সম্ভবত সেরা যখন সেগুলি সমস্ত শূন্য হয় এবং আপনি কেবল .date()সময়ের সংযোগ তুলনা করতে পারেন

আপনার যদি শত তারিখের সময় তুলনা করতে হয় তবে এটি দ্রুততর কারণ আপনাকে কেবল replace()একবার বনাম শত শত কল করতে হবেdate()


আমি এটির জন্য ভোট চাই যদি এতে কোনও মিউটেশন জড়িত না হয়। আপনি যে তারিখের সময় বিষয়গুলির সাথে তুলনা করছেন তার ক্লোন তৈরি করে আপনি এই পদ্ধতিটি মানিয়ে নিতে পারেন, তারপরে সাব-ডে রেজোলিউশন সহ ক্ষেত্রগুলি সরিয়ে তাদের সংশোধন করুন, তারপরে অনুলিপিগুলি তুলনা করুন।
নিনজাগেকো

4
@ নিনজা, এটি পরিবর্তন করে না। প্রতিস্থাপন () একটি নতুন ডেটটাইম অবজেক্ট ফেরত দেয়, যেমন স্ট্রিয়র রিপ্লেস () করে
জন লা রুয়

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

একটি ব্যবহার করে তুলনা করা উচিত .date(), কিন্তু আমি উদাহরণ হিসাবে উদাহরণস্বরূপ, মাসের সাথে বা মিনিট দ্বারা জিনিস তুলনা ইত্যাদি ক্ষেত্রে এই পদ্ধতিটি ছেড়ে দিই etc.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.