পাইথনে সময়ের তুলনা কীভাবে করা যায়?


105

আমি দেখতে পাচ্ছি যে তারিখের তুলনা করা যেতে পারে এবং এছাড়াও রয়েছে datetime.timedelta(), তবে বর্তমান সময় ( datetime.datetime.now()) আগের, পরে বা নির্দিষ্ট তারিখের তুলনায় (উদাহরণস্বরূপ সকাল 8 টা) তারিখ নির্বিশেষে কীভাবে পরীক্ষা করতে হয় তা পরীক্ষা করার জন্য আমি লড়াই করছি ।


4
আমি এটিকে উত্তর হিসাবে রাখার বিষয়ে নিশ্চিত নই, তবে আমি এটিকে মন্তব্য হিসাবে এখানে রেখেছি: আশ্চর্যরূপে, আমি দেখতে পেয়েছি যে পাইথন যেমন দুটি মূল্যবোধের মধ্যে করেন ঠিক তেমন পছন্দ '23:23:00' > '23:59:00'বা তুলনা গ্রহণ করে । সময়ের সাথে তুলনা অর্জনের এটি কি সেরা উপায়? আমি জানি না। এটা কি কাজ করে? আমি যতদূর পরীক্ষা করেছি, এটি দুর্দান্ত কাজ করেছে। তবে অবশ্যই (এবং অবশ্যই): মাস, সপ্তাহের দিনগুলি রয়েছে এমন ডেটটাইম স্ট্রিং সহ এটি ব্যবহারের সুযোগ নয়। '23:23:00' > '23:09:22'datetime.datetime.now().strftime('%H:%M')
ivanleoncz

উত্তর:


139

আপনি কোনও নির্দিষ্ট বিন্দুর তুলনা করতে পারবেন না (যেমন "এখনই") একটি অনুপযুক্ত, পুনরাবৃত্ত ইভেন্টের (প্রতিদিন সকাল 8 টা ঘটে) এর বিপরীতে।

আজকের সকাল 8 টার আগে বা পরে এখন আপনি তা পরীক্ষা করতে পারেন :

>>> import datetime
>>> now = datetime.datetime.now()
>>> today8am = now.replace(hour=8, minute=0, second=0, microsecond=0)
>>> now < today8am
True
>>> now == today8am
False
>>> now > today8am
False

4
আপনি প্যার উইসল্যান্ডারের উত্তরের গ্রহণযোগ্যতাটি ফ্লিপ করতে চাইতে পারেন (এবং সাধারণত আপনি যা করেছিলেন তার চেয়ে কয়েক মিনিট অপেক্ষা করতে হবে: পি), কারণ আপনি যা চেয়েছিলেন তা ঠিক কিছুটা নির্দিষ্ট।

69

দিনের সময় পাওয়ার জন্য আপনি অবজেক্টগুলির time()পদ্ধতিটি ব্যবহার করতে পারেন datetime, যা আপনি তারিখটি বিবেচনায় না নিয়ে তুলনার জন্য ব্যবহার করতে পারেন:

>>> this_morning = datetime.datetime(2009, 12, 2, 9, 30)
>>> last_night = datetime.datetime(2009, 12, 1, 20, 0)
>>> this_morning.time() < last_night.time()
True

4
করতে ভুলবেন না datetime.datetime.now().time(), বন্ধনী ভুলে যাবেন না now()!
জোসে সালভাটিয়ের

10

আপনি ডেটটাইম.ডেটটাইম অবজেক্টগুলি সরাসরি তুলনা করতে পারেন

যেমন:

>>> a
datetime.datetime(2009, 12, 2, 10, 24, 34, 198130)
>>> b
datetime.datetime(2009, 12, 2, 10, 24, 36, 910128)
>>> a < b
True
>>> a > b
False
>>> a == a
True
>>> b == b
True
>>> 

5

রজার পেট দ্বারা অনুপ্রাণিত:

import datetime
def todayAt (hr, min=0, sec=0, micros=0):
   now = datetime.datetime.now()
   return now.replace(hour=hr, minute=min, second=sec, microsecond=micros)    

# Usage demo1:
print todayAt (17), todayAt (17, 15)

# Usage demo2:    
timeNow = datetime.datetime.now()
if timeNow < todayAt (13):
   print "Too Early"

2

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

d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second

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



2

এক্স টাইম বৃদ্ধির তুলনার জন্য আপনি টাইমডেল্টা ফક્શન ব্যবহার করতে পারেন।

>>> import datetime 

>>> now = datetime.datetime.now()
>>> after_10_min = now + datetime.timedelta(minutes = 10)
>>> now > after_10_min 

False

এইগুলির উত্তরগুলির একটি সংমিশ্রণ এটি এবং রজার


1

তারিখের সময় তুলনা ক্ষমতা আছে

>>> import datetime
>>> import time
>>> a =  datetime.datetime.now()
>>> time.sleep(2.0)
>>> b =  datetime.datetime.now()
>>> print a < b
True
>>> print a == b
False
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.