पायथन के मानक पुस्तकालय डेटाटाइम का उपयोग दिनांक और समय (दिनांक, समय और समय) को संसाधित करने के लिए किया जा सकता है। विधियाँ strftime () और strptime (), जो दिनांक और समय को स्ट्रिंग से और में परिवर्तित करती हैं, का उपयोग विभिन्न स्वरूपों में दिनांक और समय में हेरफेर करने के लिए किया जा सकता है।
यह घटाव और जोड़ जैसे ऑपरेशन भी कर सकता है। उदाहरण के लिए, आप आसानी से गणना कर सकते हैं और 10 दिन पहले की तारीख या अब से 3 सप्ताह, या अब से 50 मिनट का समय प्राप्त कर सकते हैं।
सबसे पहले, हम डेटाटाइम मॉड्यूल में उपलब्ध वस्तुओं के निम्नलिखित वर्गों का वर्णन करेंगे।
datetime.datetime
:दिनांक और समय (तारीख और समय)datetime.date
:दिनांकdatetime.time
:समयdatetime.timedelta
:समय का अंतर और बीता हुआ समय
विधियों strftime() और strptime(), जो दिनांक/समय और स्ट्रिंग को एक दूसरे में परिवर्तित करते हैं, को भी समझाया गया है।
datetime
वस्तुdatetime.now()
:आज की तारीख, वर्तमान समयdatetime
ऑब्जेक्ट कंस्ट्रक्टर- डेटटाइम ऑब्जेक्ट को डेट ऑब्जेक्ट में कनवर्ट करना
date
वस्तुdate.today()
:आज की तारीख- दिनांक वस्तु के लिए निर्माता
time
वस्तु- समय वस्तु के लिए निर्माता
timedelta
वस्तु- टाइमडेल्टा ऑब्जेक्ट बनाने के लिए डेटाटाइम और डेट ऑब्जेक्ट घटाएं।
- टाइमडेल्टा ऑब्जेक्ट के लिए कंस्ट्रक्टर
- टाइमडेल्टा ऑब्जेक्ट्स का उपयोग करके घटाव और जोड़
strftime()
:दिनांक और समय से स्ट्रिंग में रूपांतरणstrptime()
:स्ट्रिंग से दिनांक और समय में रूपांतरण
मानक पुस्तकालय में कैलेंडर मॉड्यूल भी शामिल है, जो सादे पाठ या HTML प्रारूप में कैलेंडर उत्पन्न करता है।
डेटाटाइम ऑब्जेक्ट
डेटाटाइम ऑब्जेक्ट एक ऐसी वस्तु है जिसमें दिनांक (वर्ष, महीना, दिन) और समय (घंटे, मिनट, सेकंड, माइक्रोसेकंड) दोनों की जानकारी होती है। आप उन सूचनाओं को निम्नलिखित विशेषताओं के साथ एक्सेस कर सकते हैं।
year
month
day
hour
minute
second
microsecond
datetime.now():आज की तारीख, वर्तमान समय
datetime.now() आपको आज की तारीख (वर्तमान तिथि) और वर्तमान समय के साथ एक डेटाटाइम ऑब्जेक्ट देगा।
import datetime
dt_now = datetime.datetime.now()
print(dt_now)
# 2018-02-02 18:31:13.271231
print(type(dt_now))
# <class 'datetime.datetime'>
print(dt_now.year)
# 2018
print(dt_now.hour)
# 18
डेटाटाइम ऑब्जेक्ट के लिए कंस्ट्रक्टर
मनमानी तिथियों और समयों के लिए डेटाटाइम ऑब्जेक्ट उत्पन्न करना भी संभव है।
डेटाटाइम ऑब्जेक्ट का कंस्ट्रक्टर इस प्रकार है।
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
निम्नलिखित मान आवश्यक हैं और अन्य को छोड़ा जा सकता है। यदि छोड़ा गया है, तो डिफ़ॉल्ट मान 0 है।
year
month
day
dt = datetime.datetime(2018, 2, 1, 12, 15, 30, 2000)
print(dt)
# 2018-02-01 12:15:30.002000
print(dt.minute)
# 15
print(dt.microsecond)
# 2000
dt = datetime.datetime(2018, 2, 1)
print(dt)
# 2018-02-01 00:00:00
print(dt.minute)
# 0
डेटटाइम ऑब्जेक्ट को डेट ऑब्जेक्ट में कनवर्ट करना
एक डेटाटाइम ऑब्जेक्ट को दिनांक () विधि द्वारा दिनांक ऑब्जेक्ट में परिवर्तित किया जा सकता है, जैसा कि आगे वर्णित है।
print(dt_now)
print(type(dt_now))
# 2018-02-02 18:31:13.271231
# <class 'datetime.datetime'>
print(dt_now.date())
print(type(dt_now.date()))
# 2018-02-02
# <class 'datetime.date'>
तारीख वस्तु
दिनांक वस्तु एक ऐसी वस्तु है जिसमें दिनांक (वर्ष, माह, दिन) के बारे में जानकारी होती है। इसे एट्रीब्यूट्स वर्ष, महीने और दिन द्वारा एक्सेस किया जा सकता है।
date.today():आज की तारीख
वर्तमान तिथि (आज की तिथि) की तिथि वस्तु date.today() से प्राप्त की जा सकती है।
d_today = datetime.date.today()
print(d_today)
# 2018-02-02
print(type(d_today))
# <class 'datetime.date'>
print(d_today.year)
# 2018
दिनांक वस्तु के लिए निर्माता
दिनांक वस्तु का निर्माता इस प्रकार है
date(year, month, day)
सभी आवश्यक हैं और इन्हें छोड़ा नहीं जा सकता।
d = datetime.date(2018, 2, 1)
print(d)
# 2018-02-01
print(d.month)
# 2
समय वस्तु
समय वस्तु एक वस्तु है जिसमें समय (घंटे, मिनट, सेकंड और माइक्रोसेकंड) के बारे में जानकारी होती है। इसे घंटे, मिनट, सेकंड और माइक्रोसेकंड विशेषताओं का उपयोग करके एक्सेस किया जा सकता है।
समय वस्तु के लिए निर्माता
टाइम ऑब्जेक्ट का कंस्ट्रक्टर इस प्रकार है।
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
वे सभी वैकल्पिक हैं, और यदि उन्हें छोड़ दिया जाता है, तो वे 0 पर सेट हो जाते हैं।
t = datetime.time(12, 15, 30, 2000)
print(t)
# 12:15:30.002000
print(type(t))
# <class 'datetime.time'>
print(t.hour)
# 12
t = datetime.time()
print(t)
# 00:00:00
टाइमडेल्टा वस्तु
टाइमडेल्टा ऑब्जेक्ट एक ऐसी वस्तु है जो दो तिथियों और समय, या बीता हुआ समय के बीच के समय के अंतर का प्रतिनिधित्व करती है। इसमें दिन, सेकंड और माइक्रोसेकंड में जानकारी होती है, और इसे विशेषताओं के दिनों, सेकंड और माइक्रोसेकंड द्वारा एक्सेस किया जा सकता है। Total_seconds() विधि का उपयोग करके सेकंड की कुल संख्या प्राप्त करना भी संभव है।
टाइमडेल्टा ऑब्जेक्ट बनाने के लिए डेटाटाइम और डेट ऑब्जेक्ट घटाएं।
डेटाटाइम ऑब्जेक्ट्स को एक-दूसरे से घटाकर एक टाइमडेल्टा ऑब्जेक्ट प्राप्त होता है।
td = dt_now - dt
print(td)
# 1 day, 18:31:13.271231
print(type(td))
# <class 'datetime.timedelta'>
print(td.days)
# 1
print(td.seconds)
# 66673
print(td.microseconds)
# 271231
print(td.total_seconds())
# 153073.271231
एक दूसरे से दिनांक वस्तुओं का घटाव इसी तरह एक टाइमडेल्टा वस्तु उत्पन्न करता है।
टाइमडेल्टा ऑब्जेक्ट के लिए कंस्ट्रक्टर
टाइमडेल्टा ऑब्जेक्ट का कंस्ट्रक्टर इस प्रकार है
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
वे सभी वैकल्पिक हैं, और यदि उन्हें छोड़ दिया जाता है, तो वे 0 पर सेट हो जाते हैं।
ध्यान दें कि टाइमडेल्टा ऑब्जेक्ट में केवल निम्नलिखित जानकारी होती है।
- कई दिन:
days
- सेकंड की संख्या:
seconds
- माइक्रोसेकंड गिनती:
microseconds
उदाहरण के लिए, निम्नलिखित दो बराबर हैं
weeks=1
days=7
td_1w = datetime.timedelta(weeks=1)
print(td_1w)
# 7 days, 0:00:00
print(td_1w.days)
# 7
टाइमडेल्टा ऑब्जेक्ट्स का उपयोग करके घटाव और जोड़
टाइमडेल्टा ऑब्जेक्ट का उपयोग डेटाटाइम और डेट ऑब्जेक्ट्स के साथ घटाव और जोड़ जैसे संचालन करने के लिए किया जा सकता है। उदाहरण के लिए, आप आसानी से गणना कर सकते हैं और एक सप्ताह पहले की तारीख या अब से 10 दिन बाद, या अब से 50 मिनट का समय प्राप्त कर सकते हैं।
d_1w = d_today - td_1w
print(d_1w)
# 2018-01-26
td_10d = datetime.timedelta(days=10)
print(td_10d)
# 10 days, 0:00:00
dt_10d = dt_now + td_10d
print(dt_10d)
# 2018-02-12 18:31:13.271231
td_50m = datetime.timedelta(minutes=50)
print(td_50m)
# 0:50:00
print(td_50m.seconds)
# 3000
dt_50m = dt_now + td_50m
print(dt_50m)
# 2018-02-02 19:21:13.271231
इसका उपयोग किसी विशिष्ट तिथि तक दिनों की संख्या की गणना करने के लिए भी किया जा सकता है।
d_target = datetime.date(2020, 7, 24)
td = d_target - d_today
print(td)
# 903 days, 0:00:00
print(td.days)
# 903
strftime():दिनांक और समय से स्ट्रिंग में रूपांतरण
दिनांक और समय (तारीख और समय) की जानकारी को किसी भी प्रारूप प्रारूप में स्ट्रिंग में बदलने के लिए डेटाटाइम और डेट ऑब्जेक्ट्स की strftime () विधि का उपयोग किया जा सकता है।
स्वरूपण कोड
उपलब्ध फ़ॉर्मेटिंग कोड के लिए नीचे दिए गए आधिकारिक दस्तावेज़ देखें।
मुख्य स्वरूपण कोड नीचे सूचीबद्ध हैं।
%d
:शून्य भरे हुए दशमलव अंकन में महीने का दिन।%m
:शून्य भरे हुए दशमलव अंकन में महीना।%y
:शून्य-भरे दशमलव अंकन में वर्ष के अंतिम दो अंक।%Y
:दशमलव अंकन में वर्ष के चार अंक शून्य भरे हुए हैं।%H
:जब शून्य भरे हुए दशमलव संकेतन में व्यक्त किया जाता है (24-घंटे का अंकन)%I
:जब दशमलव संकेतन में शून्य भरा (12-घंटे का अंकन) के साथ व्यक्त किया जाता है%M
:शून्य भरे हुए दशमलव अंकन के लिए।%S
:शून्य भरे हुए दशमलव अंकन में सेकंड।%f
:माइक्रोसेकंड (6 अंक) दशमलव अंकन में 0 भरा हुआ है।%A
:स्थान के लिए सप्ताह के दिन का नाम%a
:स्थान के लिए दिन का नाम (संक्षिप्त रूप)%B
:स्थानीय महीने का नाम%b
:स्थानीय महीने का नाम (संक्षिप्त रूप)%j
:शून्य भरण के साथ दशमलव अंकन में वर्ष का दिन।%U
:शून्य भरण के साथ दशमलव अंकन में वर्ष की सप्ताह संख्या (सप्ताह रविवार से शुरू होता है)%W
:शून्य भरण के साथ दशमलव अंकन में वर्ष की सप्ताह संख्या (सप्ताह सोमवार से शुरू होता है)
दिन और महीने के नामों के लिए निम्नलिखित स्वरूपण कोड लोकेल के आधार पर अलग-अलग स्ट्रिंग्स में प्राप्त किए जा सकते हैं।
%A
%a
%B
%b
आईएसओ 8601 प्रारूप स्ट्रिंग्स के लिए एक समर्पित विधि भी है।
नमूना कोड
print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
# 2018-02-02 18:31:13
print(d_today.strftime('%y%m%d'))
# 180202
print(d_today.strftime('%A, %B %d, %Y'))
# Friday, February 02, 2018
print('Day number (how many days in a year / January 1 is 001):', d_today.strftime('%j'))
print('Week number (the week starts on Sunday / New Year's Day is 00):', d_today.strftime('%U'))
print('Week number (the week begins on Monday / New Year's Day is 00):', d_today.strftime('%W'))
# Day number (how many days in a year / January 1 is 001): 033
# Week number (the week starts on Sunday / New Year's Day is 00): 04
# Week number (the week begins on Monday / New Year's Day is 00): 05
यदि आप एक स्ट्रिंग के बजाय एक संख्या प्राप्त करना चाहते हैं, तो बस इसे एक पूर्णांक में int () के साथ परिवर्तित करें।
week_num_mon = int(d_today.strftime('%W'))
print(week_num_mon)
print(type(week_num_mon))
# 5
# <class 'int'>
टाइमडेल्टा ऑब्जेक्ट के संयोजन में, इसे बनाना आसान है, उदाहरण के लिए, किसी भी प्रारूप में द्विसाप्ताहिक तिथियों की सूची।
d = datetime.date(2018, 2, 1)
td = datetime.timedelta(weeks=2)
n = 8
f = '%Y-%m-%d'
l = []
for i in range(n):
l.append((d + i * td).strftime(f))
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']
print('\n'.join(l))
# 2018-02-01
# 2018-02-15
# 2018-03-01
# 2018-03-15
# 2018-03-29
# 2018-04-12
# 2018-04-26
# 2018-05-10
सूची समझ संकेतन का उपयोग करना बेहतर है।
l = [(d + i * td).strftime(f) for i in range(n)]
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']
- संबंधित आलेख:पायथन सूची समझ संकेतन का उपयोग करना
strptime():स्ट्रिंग से दिनांक और समय में रूपांतरण
datetime strptime() का उपयोग किसी दिनांक या समय स्ट्रिंग से डेटाटाइम ऑब्जेक्ट बनाने के लिए किया जा सकता है। मूल स्ट्रिंग के अनुरूप स्वरूपण स्ट्रिंग निर्दिष्ट करना आवश्यक है।
आईएसओ 8601 स्ट्रिंग्स (पायथन 3.7 या बाद के संस्करण) के लिए एक समर्पित विधि भी है।
नमूना कोड
date_str = '2018-2-1 12:30'
date_dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M')
print(date_dt)
# 2018-02-01 12:30:00
print(type(date_dt))
# <class 'datetime.datetime'>
पुनर्प्राप्त डेटाटाइम ऑब्जेक्ट पर strftime() विधि का उपयोग करके, आप मूल स्ट्रिंग की तुलना में किसी भिन्न प्रारूप में दिनांक और समय का प्रतिनिधित्व कर सकते हैं।
print(date_dt.strftime('%Y-%m-%d %H:%M'))
# 2018-02-01 12:30
यदि आप इसे डेटाटाइम ऑब्जेक्ट में कनवर्ट करते हैं, तो आप टाइमडेल्टा ऑब्जेक्ट्स के साथ भी संचालन कर सकते हैं, उदाहरण के लिए, आप उसी प्रारूप में 10 दिन पहले की तारीख की एक स्ट्रिंग उत्पन्न कर सकते हैं।
date_str = '2018-2-1'
date_format = '%Y-%m-%d'
td_10_d = datetime.timedelta(days=10)
date_dt = datetime.datetime.strptime(date_str, date_format)
date_dt_new = date_dt - td_10_d
date_str_new = date_dt_new.strftime(date_format)
print(date_str_new)
# 2018-01-22