पायथन में डेट्स और टाइम्स को मैनिपुलेट करने के लिए datetime नामक एक मॉड्यूल है। डेट और टाइम ऑब्जेक्ट्स के दो प्रकार हैं। प्रकार हैं naïve और aware।
naïve ऑब्जेक्ट में, इस ऑब्जेक्ट को अन्य डेट-टाइम ऑब्जेक्ट्स से स्पष्ट रूप से पता लगाने के लिए पर्याप्त जानकारी नहीं होती है। इस दृष्टिकोण में यह कोऑर्डिनेट यूनिवर्सल टाइम (UTC) का उपयोग करता है।
aware टाइप ऑब्जेक्ट्स में एल्गोरिदमिक और राजनीतिक समय समायोजन के संबंध में अलग-अलग जानकारी होती है। इस प्रकार के ऑब्जेक्ट्स का उपयोग कुछ विशिष्ट समय क्षणों को प्रस्तुत करने के लिए किया जाता है।
इस मॉड्यूल का उपयोग करने के लिए, हमें इसे आयात करना चाहिए।
import datetime
इस मॉड्यूल में अलग-अलग क्लासेस, कॉन्स्टेंट्स और मेथड्स हैं।
कॉन्स्टेंट्स हैं:
| Sr.No. | कॉन्स्टेंट और विवरण |
|---|---|
| 1 | datetime.MINYEAR यह सबसे छोटा ईयर नंबर है, जिसे डेट या डेटटाइम ऑब्जेक्ट्स के रूप में लागू किया जा सकता है। मान 1 है |
| 2 | datetime.MAXYEAR यह सबसे बड़ा ईयर नंबर है, जिसे डेट या डेटटाइम ऑब्जेक्ट्स के रूप में लागू किया जा सकता है। मान 9999 है |
उपलब्ध डेटाटाइप्स हैं:
| Sr.No. | डेटाटाइप्स और विवरण |
|---|---|
| 1 | date यह डेट टाइप ऑब्जेक्ट है। यह ग्रेगोरियन कैलेंडर का उपयोग करता है। इसमें ईयर, मंथ, डे एट्रिब्यूट्स हैं। |
| 2 | time यह एक टाइम ऑब्जेक्ट क्लास है। यह किसी विशेष दिन से स्वतंत्र है। इसमें आवर, मिनट, सेकंड, माइक्रोसेकंड और tzinfo एट्रिब्यूट्स हैं। |
| 3 | datetime यह डेट्स और टाइम्स का एक संयुक्त सेट है। |
| 4 | timedelta इसका उपयोग दो डेट, टाइम या डेटटाइम मानों के बीच अंतर को मिलीसेकंड्स में व्यक्त करने के लिए किया जाता है। |
| 5 | tzinfo यह एक एब्सट्रैक्ट बेस क्लास है। यह टाइम जोन जानकारी रखता है। इसका उपयोग डेटटाइम और टाइम क्लासेस द्वारा किया जाता है। |
| 6 | timezone इस क्लास में, यह tzinfo को लागू करता है। UTC से एक निश्चित ऑफसेट है। |
डेट टाइप ऑब्जेक्ट
डेट ऑब्जेक्ट्स एक डेट को प्रस्तुत करते हैं। डेट में डे, मंथ और ईयर पार्ट होते हैं। यह ग्रेगोरियन कैलेंडर का उपयोग करता है। इस कैलेंडर के अनुसार ईयर 1 के जनवरी 1 का दिन दिन नंबर 1 कहलाता है, और इसी तरह।
कुछ डेट संबंधित मेथड्स हैं:
मेथड date.date(year, month, day)
यह डेट टाइप ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर है। डेट बनाने के लिए सभी आर्गुमेंट्स इंटीजर टाइप डेटा के रूप में आवश्यक हैं। ईयर MINYEAR और MAXYEAR की रेंज में होना चाहिए। यदि दी गई डेट मान्य नहीं है, तो यह ValueError उठाएगा।
मेथड date.today()
यह मेथड वर्तमान स्थानीय डेट लौटाने के लिए उपयोग किया जाता है।
मेथड date.fromtimestamp(timestamp)
यह मेथड POSIX टाइमस्टैम्प से डेट प्राप्त करने के लिए उपयोग किया जाता है। यदि टाइमस्टैम्प मान रेंज से बाहर है, तो यह OverflowError उठाएगा।
मेथड date.fromordinal(ordinal)
यह मेथड प्रोलेप्टिक ग्रेगोरियन कैलेंडर ऑर्डिनल से डेट प्राप्त करने के लिए उपयोग किया जाता है। इसका उपयोग ईयर 1 के जनवरी 1 से डेट काउंट से डेट प्राप्त करने के लिए किया जाता है।
मेथड date.toordinal()
यह मेथड डेट को प्रोलेप्टिक ग्रेगोरियन कैलेंडर ऑर्डिनल में लौटाने के लिए उपयोग किया जाता है।
मेथड date.weekday()
यह मेथड डेट से सप्ताह के दिन को इंटीजर के रूप में लौटाने के लिए उपयोग किया जाता है। मंडे 0 है, ट्यूजडे 1 है और इसी तरह।
मेथड date.isoformat()
यह मेथड डेट को ISO 8601 फॉर्मेट स्ट्रिंग के रूप में लौटाने के लिए उपयोग किया जाता है। फॉर्मेट YYYY-MM-DD है।
उदाहरण कोड
import datetime as dt
new_date = dt.date(1998, 9, 5) # 5 सितंबर, 1998 की डेट स्टोर करें
print("The Date is: " + str(new_date))
print("Ordinal value of given date: " + str(new_date.toordinal()))
print("The weekday of the given date: " + str(new_date.weekday())) # मंडे 0 है
my_date = dt.date.fromordinal(732698) # ऑर्डिनल वैल्यू से डेट बनाएं
print("The Date from ordinal is: " + str(my_date))
td = my_date - new_date # टाइमडेल्टा ऑब्जेक्ट बनाएं
print('td Type: ' + str(type(td)) + '\nDifference: ' + str(td))
आउटपुट
The Date is: 1998-09-05 Ordinal value of given date: 729637 The weekday of the given date: 5 The Date from ordinal is: 2007-01-22 td Type:Difference: 3061 days, 0:00:00
टाइम ऑब्जेक्ट
टाइम ऑब्जेक्ट एक स्थानीय समय को प्रस्तुत करता है। टाइम में आवर, मिनट, सेकंड, माइक्रोसेकंड, tzinfo पार्ट होते हैं। आवर 0 से 24 की रेंज में होगा और मिनट और सेकंड 0 से 60 की रेंज में होंगे, और माइक्रोसेकंड्स 0 से 1000000 की रेंज में होंगे।
कुछ टाइम संबंधित मेथड्स हैं:
मेथड time.fromisoformat(time_string)
यह मेथड ISO 8601 स्ट्रिंग से टाइम प्राप्त करने के लिए उपयोग किया जाता है। यह time.isoformat() मेथड के किसी भी आउटपुट को ले सकता है।
मेथड time.replace(hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microseconds, tzinfo=self.tzinfo, *fold=0)
यह मेथड आर्गुमेंट्स से मान लेकर एक टाइम लौटाने के लिए उपयोग किया जाता है। यदि कोई आर्गुमेंट पास नहीं किया जाता है, तो यह वही टाइम ऑब्जेक्ट वैल्यू लौटाएगा।
मेथड time.tzname()
यह मेथड टाइम जोन का नाम लौटाने के लिए उपयोग किया जाता है। यदि tzinfo None है, तो यह None लौटाएगा।
डेटटाइम ऑब्जेक्ट
डेटटाइम ऑब्जेक्ट डेट और टाइम दोनों रखता है। डेट ऑब्जेक्ट के रूप में, यह ग्रेगोरियन कैलेंडर का समर्थन करता है और टाइम ऑब्जेक्ट के रूप में यह प्रत्येक दिन के लिए 정확히 3600*24 सेकंड रखता है।
यह सभी डेट और टाइम संबंधित मेथड्स का समर्थन करता है, कुछ मेथड्स डेटटाइम के लिए भी मौजूद हैं। ये हैं:
मेथड datetime.now(tz=None)
यह मेथड वर्तमान डेट और टाइम प्राप्त करने के लिए उपयोग किया जाता है। यदि tz मौजूद नहीं है या None है, तो यह today() मेथड की तरह डेट लौटाएगा।
मेथड datetime.utcnow()
यह मेथड वर्तमान UTC डेट और टाइम संबंधित जानकारी प्राप्त करने के लिए उपयोग किया जाता है।
strftime() और strptime() नामक दो अन्य मेथड्स भी हैं। ये मेथड्स डेट और टाइम ऑब्जेक्ट्स के साथ-साथ डेटटाइम ऑब्जेक्ट्स के लिए भी लागू होते हैं।
मेथड datetime.strftime(format[, t])
strftime() मेथड एक टपल या struct_time को कन्वर्ट करता है जो gmtime() या localtime() द्वारा लौटाए गए समय को दर्शाता है, फॉर्मेट आर्गुमेंट द्वारा निर्दिष्ट एक स्ट्रिंग में। यदि t प्रदान नहीं किया गया है, तो localtime() द्वारा लौटाए गए वर्तमान समय का उपयोग किया जाता है। फॉर्मेट एक स्ट्रिंग होना चाहिए। यदि t में कोई फील्ड अनुमत रेंज से बाहर है तो ValueError एक्सेप्शन उठाई जाती है।
मेथड datetime.strptime(format[, t])
strptime() मेथड एक फॉर्मेट के अनुसार समय को दर्शाने वाली स्ट्रिंग को पार्स करता है। रिटर्न वैल्यू एक struct_time है जैसा कि gmtime() या localtime() द्वारा लौटाया जाता है। फॉर्मेट पैरामीटर उन्हीं डायरेक्टिव्स का उपयोग करता है जो strftime() द्वारा उपयोग किए जाते हैं; यह डिफ़ॉल्ट रूप से "%a %b %d %H:%M:%S %Y" होता है जो ctime() द्वारा लौटाए गए फॉर्मेटिंग से मेल खाता है।
ये दो मेथड्स कुछ डायरेक्टिव्स का उपयोग करते हैं। उनमें से कुछ नीचे सूचीबद्ध हैं:
| Sr.No. | डायरेक्टिव्स और विवरण |
|---|---|
| 1 | %A पूर्ण वीकडे नाम |
| 2 | %B पूर्ण मंथ नाम |
| 3 | %d महीने का दिन (0 से 31) |
| 4 | %S सेकंड |
| 5 | %G 4 अंकों का वर्ष, ISO सप्ताह संख्या के अनुरूप |
| 6 | %m महीना (1 से 12) |
| 7 | %M मिनट |
| 8 | %T वर्तमान समय, %H:%M:%S के बराबर |
| 9 | %W वर्तमान वर्ष का सप्ताह नंबर, पहले मंडे को पहले सप्ताह के पहले दिन के रूप में शुरू होता है |
| 10 | %w दिन को दशमलव के रूप में, संडे=0 |
| 11 | %Y शताब्दी सहित वर्ष |
| 12 | %Z या %z टाइम जोन या नाम या संक्षिप्त नाम |
उदाहरण कोड
import datetime as dt
my_date1 = dt.datetime(2015, 1, 4) # 4 जनवरी, 2015 की डेट स्टोर करें
print(my_date1)
print('The Weekday of that day was: ' + my_date1.strftime('%A'))
my_date2 = dt.datetime.strptime('August-15-2017', '%B-%d-%Y') # 15 अगस्त, 2017 की डेट स्टोर करें
print(my_date2)
print('The Weekday of that day was: ' + my_date2.strftime('%A'))
print('The difference between two days: ' + str(abs(my_date1 - my_date2)))
आउटपुट
2015-01-04 00:00:00 The Weekday of that day was: Sunday 2017-08-15 00:00:00 The Weekday of that day was: Tuesday The difference between two days: 954 days, 0:00:00