Python:如何在var列表中存储日期范围的结果

时间:2018-05-22 14:11:53

标签: python python-3.x

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 bd
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 bd
item = collection.find_one({"date" : d})
item1 = collection.find_one({"date" : d1})
d = collection.find_one({})
d1 = collection.find_one({})
datas = item['date']
datas1 = item1['date']

#conversão de string para objecto
dataObject = datetime.datetime.strptime(datas, "%Y-%m-%d")
dataObject1 = datetime.datetime.strptime(datas1, "%Y-%m-%d")

#range
for single_date in daterange(dataObject, dataObject1):
    print (single_date.strftime("%Y-%m-%d"))

如果可能,我想将此代码的输出变为var列表。 例如,开始日期为2018-05-07,结束日期为2018-05-11,输出为:

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

如何将其添加到变量中?

2 个答案:

答案 0 :(得分:3)

假设此部分在列表中生成您想要的日期:

#range
for single_date in daterange(dataObject, dataObject1):
    print (single_date.strftime("%Y-%m-%d"))

将其更改为:

mylist = []
#range
for single_date in daterange(dataObject, dataObject1):
    mylist.append(single_date.strftime("%Y-%m-%d"))

答案 1 :(得分:3)

这比简单的for循环语句

更快
my_list = [d.strftime("%Y-%m-%d") for d in daterange(dataObject, dataObject1)]