單雙周計算

2022-07-22 00:42:21 字數 3085 閱讀 8229

實在受不了單雙周了,寫了個推算程式想往後推幾周就推幾周

例:2023年10月19日——2023年10月25日:雙

2023年10月26日——2023年11月 1日:單

...

# @file    : run.py

import datetime

def dayms(leapyear_):

days = dict()

lis = [1, 3, 5, 7, 8, 10, 12]

for i in lis: days[i] = 31

lis = [4, 6, 9, 11]

for i in lis: days[i] = 30

days[2] = 29 if leapyear_ else 28

# return sorted(days.items(), key=lambda x: x[0])

return days

def leapyear(year_):

if (year_ % 4) == 0:

if (year_ % 100) == 0:

if (year_ % 400) == 0:

return true # 整百年能被400整除的是閏年

else:

return false # 整百年不能被400整除的不是閏年

else:

return true # 非整百年能被4整除的為閏年

else:

return false # 不能被4整除不是閏年

def mr(year_, month_, yeardic_):

if 1 <= month_ <= 12:

pass

else:

year_ += 1 if month_ > 12 else -1

month_ = 1 if month_ > 12 else 12

# 如果傳值為13月(誤)。則應該是一月

# 如果傳值是0月,則只能由1月-1得到,為此應該是12月

yeardic_ = dayms(leapyear(year_))

# 從新計算是否是閏年

return year_, month_, yeardic_

def dr(year_, month_, day_, yeardic_):

if yeardic_[month_] < day_:

day_ -= yeardic_[month_]

year_, month_, yeardic_ = mr(year_, month_ + 1, yeardic_)

if day_ < 0:

year_, month_, yeardic_ = mr(year_, month_ - 1, yeardic_)

day_ += yeardic_[month_]

return year_, month_, day_, yeardic_

def ouy(yeardic_, year_, month_, day_, ds_, dayofweek):

k = int(input("往後推多少周:"))

year_, month_, day_, yeardic_ = dr(year_, month_, day_ - dayofweek, yeardic_)

for i in range(k):

year1, month1, day1, yeardic_ = \

dr(year_, month_, day_ + 1, yeardic_) # 下一周結束日

year_, month_, day_, yeardic_ = \

dr(year_, month_, day_ + 7, yeardic_) # 下一周起始日

print("年月日——年月日:{}" \

.format(year1, month1, day1, \

year_, month_, day_, \

ds_[i % 2]))

if __name__ == '__main__':

sl = input("以當前時間開始推算輸入y,自定義時間輸入s:")

s, dayofweek = 's', 0

if sl == 'y':

s = datetime.datetime.now().strftime('%y-%m-%d') # 當前日期

elif sl == 's':

s = input("輸入日期(y-m-d):")

year, month, day = s.split('-') # 分割字串提取日期

ntime = datetime.datetime(int(year), int(month), int(day)) # 當前時間

dayofweek = ntime.isoweekday()

yeardic = dayms(leapyear(int(year)))

ds = input("當前是單週還是雙周?(單和雙二選一):")

ds = ['單', '雙'] if ds == '單' else ['雙', '單']

ouy(yeardic, int(year), int(month), int(day), ds, dayofweek)

'''示例1輸出:

以當前時間開始推算輸入y,自定義時間輸入s:s

輸入日期(y-m-d):2020-1-3

當前是單週還是雙周?(單和雙二選一):雙

往後推多少周:4

2023年12月30日——2023年 1月 5日:雙

2023年 1月 6日——2023年 1月12日:單

2023年 1月13日——2023年 1月19日:雙

2023年 1月20日——2023年 1月26日:單

示例2輸出:

以當前時間開始推算輸入y,自定義時間輸入s:y

當前是單週還是雙周?(單和雙二選一):雙

往後推多少周:4

2023年10月19日——2023年10月25日:雙

2023年10月26日——2023年11月 1日:單

2023年11月 2日——2023年11月 8日:雙

2023年11月 9日——2023年11月15日:單

'''

彈性計算雙週刊 第 5 期

摘要 阿里雲彈性裸金屬伺服器 神龍 於2018年5月16日在北京舉行產品發布會,再度引起行業關注熱潮,技術專家狒哥將作為嘉賓和大家作精彩的分享。fpga f3的經典使用場景及極大簡化fpga開發部署流程的深度解析爆出乾貨,專有宿主機 dedicated host 開放測試名額申請,這是乙個基於阿里雲...

彈性計算雙週刊 第22期

最新動態 單顆物理gpu太貴?阿里雲發布雲上首個輕量級gpu例項vgn5i 阿里雲本次首家提供雲上輕量級gpu例項,意味著使用者可以用更細粒度的計算資源開啟業務。該產品基於nvidia tesla p4 gpu,支援多種規格,企業可以按需選擇例項規格或者在雲市場選擇nvidia quadro虛擬工作...

彈性計算雙週刊 第17期

最新動態 1 成本和效能兼得,ecs推出t5例項無效能約束模式 對於突發性能例項來說,在效能負載大於基線時會消耗積分 當然,反之效能負載小於基線時會積累積分 當積分消耗完後,t5標準例項的效能會被限制在基線。而t5無效能約束例項可以通過預支積分,或者付費的方式,繼續維持系統效能,相當於信用卡版本的t...