मेरे पास 2 बार मान हैं जिनके प्रकार datetime.time
है। मैं उनका अंतर खोजना चाहता हूं। करने के लिए स्पष्ट बात टी 1 - टी 2 है, लेकिन यह काम नहीं करता है। यह datetime.datetime
प्रकार की वस्तुओं के लिए काम करता है लेकिन datetime.time
के लिए नहीं। तो ऐसा करने का सबसे अच्छा तरीका क्या है?पायथन में 2 बार के बीच अंतर खोजने का सबसे आसान तरीका क्या है?
उत्तर
सबसे पहले, ध्यान दें कि एक datetime.time दिन का समय, किसी विशेष दिन से स्वतंत्र है, और इसलिए किसी भी दो datetime के बीच अलग-अलग .time मान 24 घंटे से कम होने जा रहा है।
एक दृष्टिकोण डेटाटाइमटाइम दोनों मानों को तुलनीय मानों (जैसे मिलीसेकंड) में परिवर्तित करना है, और अंतर ढूंढना है।
t1, t2 = datetime.time(...), datetime.time(...)
t1_ms = (t1.hour*60*60 + t1.minute*60 + t1.second)*1000 + t1.microsecond
t2_ms = (t2.hour*60*60 + t2.minute*60 + t2.second)*1000 + t2.microsecond
delta_ms = max([t1_ms, t2_ms]) - min([t1_ms, t2_ms])
यह थोड़ा लंगड़ा है, लेकिन यह काम करता है।
ऐसा लगता है कि यह समर्थित नहीं है, क्योंकि डेटाटाइम में ओवरफ़्लो से निपटने का कोई अच्छा तरीका नहीं होगा। मुझे पता है कि यह सीधे उत्तर नहीं है, लेकिन शायद मेरे से अधिक अजगर अनुभव वाला कोई व्यक्ति इसे थोड़ा और ले सकता है। अधिक जानकारी के लिए, इसे देखें: http://bugs.python.org/issue3250
आप दोनों को timedelta objects में बदल सकते हैं और इन्हें एक दूसरे से घटा सकते हैं, जो कैर्री ओवरों का ख्याल रखेगा। उदाहरण के लिए:
>>> import datetime as dt
>>> t1 = dt.time(23, 5, 5, 5)
>>> t2 = dt.time(10, 5, 5, 5)
>>> dt1 = dt.timedelta(hours=t1.hour, minutes=t1.minute, seconds=t1.second, microseconds=t1.microsecond)
>>> dt2 = dt.timedelta(hours=t2.hour, minutes=t2.minute, seconds=t2.second, microseconds=t2.microsecond)
>>> print(dt1-dt2)
13:00:00
>>> print(dt2-dt1)
-1 day, 11:00:00
>>> print(abs(dt2-dt1))
13:00:00
पाइथन में नकारात्मक टाइमडेल्टा ऑब्जेक्ट्स नकारात्मक क्षेत्र फ़ील्ड प्राप्त करते हैं, अन्य फ़ील्ड सकारात्मक होते हैं। आप पहले उनकी जांच कर सकता है: तुलना समय वस्तुओं और timedelta वस्तुओं दोनों पर काम करता है:
>>> dt2 < dt1
True
>>> t2 < t1
True
chryss: आप गंभीरता से एक उदाहरण के साथ अच्छी तरह से कर सकता है यहाँ। – Arafangion
एक छोटे से मूर्ख है, लेकिन आप एक मनमाना दिन उठा और उस में हर बार embedding, datetime.datetime.combine
का उपयोग कर, तो घटाकर की कोशिश कर सकते:
>>> import datetime
>>> t1 = datetime.time(2,3,4)
>>> t2 = datetime.time(18,20,59)
>>> dummydate = datetime.date(2000,1,1)
>>> datetime.datetime.combine(dummydate,t2) - datetime.datetime.combine(dummydate,t1)
datetime.timedelta(0, 58675)
अजगर pytz (http://pytz.sourceforge.net) मॉड्यूल जो गणित के लिए इस्तेमाल किया जा सकता है 'समय' वस्तुओं का। यह डीएसटी ऑफसेट्स का भी ख्याल रखता है। उपरोक्त पृष्ठ में कई उदाहरण हैं जो pytz के उपयोग को चित्रित करते हैं।
* समय * को निर्दिष्ट किए बिना केवल समय जानने के लिए टाइमज़ोन के बारे में बात करना समझ में नहीं आता है। यदि आप दिनांक और समय दोनों जानते हैं तो [अंतर के लिए एकाधिक परिभाषाओं का उपयोग किया जा सकता है] (http://stackoverflow.com/a/25427822/4279) – jfs
मिलीसेकंड में समय पुनर्प्राप्त करें और फिर घटाएं।
पर्यावरण। यदि आपको कुछ जल्दी चाहिए तो टाइककाउंट अच्छी तरह से काम करता प्रतीत होता है।
पूर्णांक शुरू = Environment.TickCount
... DoSomething()
पूर्णांक elapsedtime = Environment.TickCount - शुरू
जॉन
- 1. वर्तमान सबनेट में मुफ्त आईपीएड्रेस खोजने का सबसे आसान तरीका?
- 2. पेड़ में सबट्री खोजने का आसान तरीका
- 3. रिकर्सिवली खोजने और बदलने का सबसे आसान तरीका?
- 4. पायथन में "2 * 2" और "2 ** 2" के बीच क्या अंतर है?
- 5. जावा में 'है' करने का सबसे आसान तरीका क्या है?
- 6. एक 2 डी सरणी खोजने के लिए सबसे साफ तरीका?
- 7. सबसे आसान तरीका?
- 8. इंटरनेट पर डेटा स्थानांतरित करने का सबसे आसान तरीका, पायथन
- 9. सबसे आसान तरीका
- 10. सरणी के बीच मैचों की संख्या खोजने का सबसे तेज़ तरीका क्या है?
- 11. सी # में अंतर प्रक्रिया संचार करने का सबसे आसान तरीका क्या है?
- 12. ट्रिगर्स में निषेध करने का सबसे आसान तरीका क्या है?
- 13. पर्ल में खोजने के लिए तारों की सरणी से मिलान करने का सबसे आसान तरीका?
- 14. शब्दकोशों की सूची में पायथन शब्दकोश मान खोजने का सबसे अच्छा तरीका क्या है?
- 15. पायथन में कई सबस्ट्रिंग्स में से एक को खोजने का सबसे प्रभावी तरीका क्या है?
- 16. पायथन में उपज का उपयोग करके रिक्त पुनरावृत्ति बनाने का सबसे आसान तरीका क्या है?
- 17. घंटे में 2 डेटटाइम के बीच अंतर?
- 18. सी #: समय घटाने का सबसे आसान तरीका क्या है?
- 19. सबसे आसान तरीका RavenDB
- 20. क्लोजर और पायथन कार्यक्रमों को जानकारी साझा करने का सबसे आसान तरीका क्या है?
- 21. एकाधिक इकाइयों के बीच डेटा सिंक करने का सबसे चालाक और आसान तरीका क्या है?
- 22. क्या बार में fmt.Println() और println() के बीच का अंतर
- 23. पायथन में नेस्टेड सूचियों को खोजने का सबसे प्रभावी तरीका क्या है?
- 24. गिटहब खोजने का सबसे अच्छा तरीका क्या है?
- 25. 2 शब्दकोशों के बीच "कुंजी" अंतर खोजने के लिए संक्षिप्त तरीका?
- 26. दो फाइलों के बीच एक क्रमबद्ध अंतर करने का एक आसान तरीका क्या है?
- 27. पायथन में ग्राफिकल संवाद पॉप अप करने का सबसे आसान क्रॉस-प्लेटफार्म तरीका क्या है?
- 28. structs की सरणी बनाने का सबसे आसान तरीका क्या है?
- 29. पीडीएफ से डेटा निकालने का सबसे आसान तरीका क्या है?
- 30. पायथन में कंप्यूटर माइक्रोफ़ोन तक पहुंचने का सबसे आसान तरीका क्या है?
ध्यान दें कि यह समाधान साइन संरक्षित नहीं करता है। इसके अलावा, delta_ms = abs (t1_ms - t2_ms) कम से कम एक घटाव को समझने और सहेजने के लिए थोड़ा आसान है। –
काम नहीं करता है अगर t1_ms मध्यरात्रि से पहले है और t2_ms मध्यरात्रि के बाद –
यह 1000000 नहीं होना चाहिए? 1 एस = 1000000 μs के बाद से। – Paggas