亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據開始和結束獲取for循環中的日期列表?

如何根據開始和結束獲取for循環中的日期列表?

白衣非少年 2023-04-25 16:05:14
我想使用 for 循環獲取開始日期和結束日期之間范圍的唯一 yyyy-mm-01 列表。這是我的代碼:import datetimefrom datetime import timedelta, datestart=date(2017,4,1)end=(datetime.date.today().replace(day=1)) - datetime.timedelta(days=1) #last completed monthdef daterange(start, end):    for n in range(int((end - start).days)):        yield start + timedelta(n)for single_date in daterange(start, end):    myset = str(single_date.strftime("%Y-%m-01"))    print(myset)The issue is that my result looks like this:2017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-04-012017-05-01我嘗試添加 set() 但它仍然顯示冗余日期。我該如何解決?
查看完整描述

4 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

dates = set()

for single_date in daterange(start, end):

    dates.add(single_date.strftime("%Y-%m-01"))


print(sorted(list(dates)))


查看完整回答
反對 回復 2023-04-25
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

import datetime

from datetime import timedelta, date

from dateutil.relativedelta import relativedelta


start=date(2017,4,1)

end=(datetime.date.today().replace(day=1)) - datetime.timedelta(days=1) #last completed month


lst = []

current_date = start

while current_date < end:

    current_date = current_date.replace(day=1) + relativedelta(months=1)

    lst.append(current_date)


print(lst)


查看完整回答
反對 回復 2023-04-25
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

問題是你實際上并沒有使用你的集合來檢查你之前是否見過一個日期:


myset = set()

for single_date in daterange(start, end):

    mydate = str(single_date.strftime("%Y-%m-01"))

    if mydate not in myset:

        print(mydate)

        myset.add(mydate)


查看完整回答
反對 回復 2023-04-25
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

我強烈建議您使用dateutils模塊來獲取這樣的重復日期。您可以使用cmd安裝它pip install python-dateutil


>>> from dateutil.rrule import rrule, MONTHLY

>>>

>>> start=date(2017,4,1)

>>> end=(datetime.date.today().replace(day=1)) - datetime.timedelta(days=1)

>>> res = list(d.strftime("%Y-%m-%d") for d in rrule(dtstart=start, until=end, freq=MONTHLY))

>>> pprint(res)

['2017-04-01',

 '2017-05-01',

 '2017-06-01',

 '2017-07-01',

 '2017-08-01',

 '2017-09-01',

 '2017-10-01',

 '2017-11-01',

 '2017-12-01',

 '2018-01-01',

 '2018-02-01',

 '2018-03-01',

 '2018-04-01',

 '2018-05-01',

 '2018-06-01',

 '2018-07-01',

 '2018-08-01',

 '2018-09-01',

 '2018-10-01',

 '2018-11-01',

 '2018-12-01',

 '2019-01-01',

 '2019-02-01',

 '2019-03-01',

 '2019-04-01',

 '2019-05-01',

 '2019-06-01',

 '2019-07-01',

 '2019-08-01',

 '2019-09-01',

 '2019-10-01',

 '2019-11-01',

 '2019-12-01',

 '2020-01-01',

 '2020-02-01',

 '2020-03-01',

 '2020-04-01',

 '2020-05-01',

 '2020-06-01',

 '2020-07-01']


查看完整回答
反對 回復 2023-04-25
  • 4 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號