मैं चर्चा को दो चरणों में संक्षेपित करता हूं:
- कच्चे प्रारूप को एक
datetime
वस्तु में बदलें ।
- सप्ताह की संख्या की गणना करने के लिए किसी
datetime
वस्तु या वस्तु के कार्य का उपयोग करें date
।
जोश में आना
`` `अजगर
from datetime import datetime, date, time
d = date(2005, 7, 14)
t = time(12, 30)
dt = datetime.combine(d, t)
print(dt)
`` `
पहला चरण
किसी datetime
ऑब्जेक्ट को मैन्युअल रूप से जनरेट करने के लिए , हम उपयोग datetime.datetime(2017,5,3)
या कर सकते हैंdatetime.datetime.now()
।
लेकिन वास्तव में, हमें आमतौर पर मौजूदा स्ट्रिंग को पार्स करने की आवश्यकता होती है। हम strptime
फ़ंक्शन का उपयोग कर सकते हैं , जैसे कि datetime.strptime('2017-5-3','%Y-%m-%d')
आपको प्रारूप को विशिष्ट करना होगा। विभिन्न प्रारूप कोड का विवरण आधिकारिक दस्तावेज में पाया जा सकता है ।
वैकल्पिक रूप से, एक अधिक सुविधाजनक तरीका डेटापार मॉड्यूल का उपयोग करना है। उदाहरण हैं dateparser.parse('16 Jun 2010')
, dateparser.parse('12/2/12')
याdateparser.parse('2017-5-3')
उपरोक्त दो दृष्टिकोण एक datetime
वस्तु को वापस करेंगे ।
दूसरा चरण
datetime
कॉल करने के लिए प्राप्त वस्तु का उपयोग करें strptime(format)
। उदाहरण के लिए,
`` `अजगर
dt = datetime.strptime('2017-01-1','%Y-%m-%d') # return a datetime object. This day is Sunday
print(dt.strftime("%W")) # '00' Monday as the 1st day of the week. All days in a new year preceding the 1st Monday are considered to be in week 0.
print(dt.strftime("%U")) # '01' Sunday as the 1st day of the week. All days in a new year preceding the 1st Sunday are considered to be in week 0.
print(dt.strftime("%V")) # '52' Monday as the 1st day of the week. Week 01 is the week containing Jan 4.
`` `
यह तय करना बहुत मुश्किल है कि किस प्रारूप का उपयोग करना है। एक बेहतर तरीका यह है date
कि कॉल करने के लिए एक वस्तु प्राप्त करें isocalendar()
। उदाहरण के लिए,
`` `अजगर
dt = datetime.strptime('2017-01-1','%Y-%m-%d') # return a datetime object
d = dt.date() # convert to a date object. equivalent to d = date(2017,1,1), but date.strptime() don't have the parse function
year, week, weekday = d.isocalendar()
print(year, week, weekday) # (2016,52,7) in the ISO standard
`` `
वास्तव में, आपको date.isocalendar()
साप्ताहिक रिपोर्ट तैयार करने के लिए उपयोग करने की अधिक संभावना होगी , विशेष रूप से "क्रिसमस-नव वर्ष" खरीदारी के मौसम में।