मैं एक API जहां मैं अपने अनुरोध, पूर्व के लिए तिथि सीमा प्रदान करने की आवश्यकता के माध्यम से कुछ डेटा तक पहुँचने कर रहा हूँ। प्रारंभ = '20100101', अंत = '20150415'। मैंने सोचा कि मैं तारीख सीमा को गैर-ओवरलैपिंग अंतराल में तोड़कर और प्रत्येक अंतराल पर मल्टीप्रोसेसिंग का उपयोग करके इसे तेज कर दूंगा।एक तिथि सीमा कैसे हम इसे तोड़ सकते हैं अप एन सन्निहित उप अंतराल में देखते हुए?
मेरे समस्या यह है कि मैं कैसे तिथि सीमा को तोड़ने रहा है नहीं लगातार मुझे उम्मीद परिणाम दे रही है। यहाँ मैं क्या किया है है:
from datetime import date
begin = '20100101'
end = '201'
मान लीजिए हम तिमाहियों में इस को तोड़ने के लिए चाहता था।
def get_yyyy_mm_dd(yyyymmdd):
# given string 'yyyymmdd' return (yyyy, mm, dd)
year = yyyymmdd[0:4]
month = yyyymmdd[4:6]
day = yyyymmdd[6:]
return int(year), int(month), int(day)
y1, m1, d1 = get_yyyy_mm_dd(begin)
d1 = date(y1, m1, d1)
y2, m2, d2 = get_yyyy_mm_dd(end)
d2 = date(y2, m2, d2)
फिर उप अंतराल में इस सीमा को विभाजित:: सबसे पहले मैं तारीखों में स्ट्रिंग को बदलने
def remove_tack(dates_list):
# given a list of dates in form YYYY-MM-DD return a list of strings in form 'YYYYMMDD'
tackless = []
for d in dates_list:
s = str(d)
tackless.append(s[0:4]+s[5:7]+s[8:])
return tackless
def divide_date(date1, date2, intervals):
dates = [date1]
for i in range(0, intervals):
dates.append(dates[i] + (date2 - date1)/intervals)
return remove_tack(dates)
शुरू करते हैं और हम ऊपर से अंत का प्रयोग मिलता है:
listdates = divide_date(d1, d2, 4)
print listdates # ['20100101', '20100402', '20100702', '20101001', '201'] looks correct
लेकिन अगर बजाय मैं तिथियों का उपयोग करता हूं:
begin = '20150101'
end = '20150228'
...
listdates = divide_date(d1, d2, 4)
print listdates # ['20150101', '20150115', '20150129', '20150212', '20150226']
मुझे फरवरी के अंत में दो दिन याद आ रही है। मुझे अपने आवेदन के लिए समय या समय क्षेत्र की आवश्यकता नहीं है और मुझे दूसरी लाइब्रेरी इंस्टॉल करने में कोई फर्क नहीं पड़ता।
वर्क्स महान! संक्षिप्त और मेरे सभी मध्यवर्ती कार्यों के बिना। धन्यवाद! – Scott
बस कुछ ऐसा देखा जो शायद आप संपादित करना चाहें।आपके उत्तर में: उपज (डी 1 + diff * i) .strftime ("% Y% m% d"), डी 1 एक वैश्विक है और मेरे कोड के साथ काम करता है, लेकिन सामान्य डी 1 में शुरू होना चाहिए। – Scott
@ स्कॉट: धन्यवाद। मेरा मूल कोड डी 1, डी 2 वैरिएबल के साथ था, लेकिन बाद में इसे इस पोस्ट में सार्थक कुछ चीज़ों में बदल दिया, लेकिन प्रतीत होता है कि संपादन में कुछ याद आया। – Abhijit