पायथन में समय की तुलना कैसे करें?


98

मैं देखता हूं कि तारीख की तुलना की जा सकती है और वहां भी हो सकती है datetime.timedelta(), लेकिन मैं यह पता लगाने के लिए संघर्ष कर रहा हूं कि वर्तमान समय ( datetime.datetime.now()), बाद या निर्दिष्ट तिथि (जैसे सुबह 8) की तारीख की परवाह किए बिना कैसे जांच की जाए ।


1
मैं इसे उत्तर के रूप में रखने के बारे में निश्चित नहीं हूं, लेकिन मैंने इसे टिप्पणी के रूप में यहां रखा है: आश्चर्यजनक रूप से, मैंने पाया कि पायथन की तुलना तुलनाओं को स्वीकार करता है '23:23:00' > '23:59:00'या '23:23:00' > '23:09:22', जैसे आप दो datetime.datetime.now().strftime('%H:%M')मूल्यों के बीच करेंगे । क्या यह समय के बीच तुलना हासिल करने का सबसे अच्छा तरीका है? मुझे नहीं पता। क्या यह काम करता है? जहां तक ​​मैंने परीक्षण किया, यह ठीक काम किया। लेकिन निश्चित रूप से (और निश्चित रूप से): महीने, सप्ताह के दिनों में डेटाइम स्ट्रिंग के साथ इसका उपयोग करने का मौका नहीं।
ivanleoncz

जवाबों:


128

आप किसी विशिष्ट बिंदु की तुलना समय में नहीं कर सकते हैं (जैसे "अभी ठीक है") एक अप्रतिबंधित, आवर्ती घटना (प्रतिदिन सुबह 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
आप Pär Wieslander के उत्तर के लिए स्वीकृति को फ्लिप करना चाहते हैं (और आम तौर पर आपको कुछ और मिनटों की प्रतीक्षा करनी चाहिए: P), क्योंकि आपने जो पूछा है, वह थोड़ा अधिक विशिष्ट है।

65

आप दिन के समय को प्राप्त करने के लिए वस्तुओं की 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

2
करना सुनिश्चित करें datetime.datetime.now().time(), कोष्ठक में मत भूलना now()!
जोस साल्वेटेरिया

10

आप सीधे datetime.datetime वस्तुओं की तुलना कर सकते हैं

उदाहरण के लिए:

>>> 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
>>> 

4

रोजर पाटे से प्रेरित:

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

जब तक आपके पास अविश्वसनीय रूप से सरल उपयोग-मामला नहीं है, मैं ऐसा करने की सलाह नहीं देता। टाइमजोन जागरूकता या तिथियों के बारे में जागरूकता की आवश्यकता के लिए, आपको डेटाइम का उपयोग करना चाहिए।


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


1

आप एक्स टाइमेल तुलना बढ़ाने के लिए टेमेडेल्टा फक्शन का उपयोग कर सकते हैं।

>>> import datetime 

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

False

इनमें से सिर्फ एक संयोजन का जवाब देता यह और रोजर

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