मेरे पास पायथन में यह कोड है:

import datetime
import re
import pymongo
from datetime import timedelta, date

def daterange(d, d1):
    for n in range(int ((d1 - d).days)):
        yield d + timedelta(n)

#conect to db
uri = "mongodb://127.0.0.1:27017"
client = pymongo.MongoClient(uri)
database = client['db']
collection = database['currency']


d = input('Insert beginning date (yyyy-mm-dd): ')
d1 = input('Insert end date (yyyy-mm-dd): ')

#search db
item = collection.find_one({"date" : d})
item1 = collection.find_one({"date" : d1})
datas = item['date']
datas1 = item1['date']

#convert string to object
dataObject = datetime.datetime.strptime(datas, "%Y-%m-%d")
dataObject1 = datetime.datetime.strptime(datas1, "%Y-%m-%d")


#range
mylist = []
for single_date in daterange(dataObject, dataObject1):
    mylist.append(single_date.strftime("%Y-%m-%d"))
    print(single_date.strftime("%Y-%m-%d"))
print(mylist)
item = collection.find_one({"date" : mylist[0]})
print(item)

यदि कोई उपयोगकर्ता 2018-05-07 की तरह एक आरंभ तिथि और 2018-05-11 की तरह एक समाप्ति तिथि सम्मिलित करता है तो वह प्रिंट करेगा:

2018-05-07
2018-05-08
2018-05-09
2018-05-10

इस मामले में यह केवल 10 वें दिन तक प्रिंट होगा, मुझे अंतिम तिथि (2018-05-11) भी प्रिंट करने के लिए कैसे करना चाहिए?

0
Filipe Varandas 24 मई 2018, 13:53

1 उत्तर

सबसे बढ़िया उत्तर

आपके प्रश्न के कई समाधान हैं, हालांकि, मेरा मानना ​​है कि daterange(d, d1) फ़ंक्शन को केवल range(int ((d1 - d).days)) में 1 जोड़कर समायोजित करना सबसे आसान होगा।

def daterange(d, d1):
    for n in range(int ((d1 - d).days) + 1):
        yield d + timedelta(n)

इसका कारण यह है कि, दस्तावेज़ीकरण के अनुसार, range(stop) स्टॉप वैल्यू को आउटपुट नहीं करता है, लेकिन केवल 'पहले' के मानों को आउटपुट करता है।

4
Mefaso 24 मई 2018, 13:58