问题:
- 以每年的立春作为起始点,每N天为一个单元,任给一个日期,返回该日期所在单元的起始和结束日期。例如:N=3, 输入日期20180208,返回 20180207,20180209(2018年的立春是20180204,所以第一个单元是20180204-20180206,第二个单元是 20180207-20180209,依次类推)
我的解题方式....
算了,直接贴代码吧
import datetime
import sxtwl
import time
from datetime import datetime as dt
class Spring_Confirm():
pass
def __init__(self, inputtime, inputunit):
self.year = inputtime[0:4]
self.month = inputtime[4:6]
self.day = inputtime[6:8]
self.unit = inputunit
self.now_date = self.year + "-" + self.month + "-" + self.day
def LiChunRi(self, year):
lunar = sxtwl.Lunar()
for i in range(3, 6):
day = lunar.getDayBySolar(int(year), 2, i)
if day.jqmc == 3:
self.lichun = year + '-02-0' + str(i)
break
def Start_End_Data(self):
if self.now_date > self.lichun:
pass
else:
year = str((int(self.year) - 1))
self.LiChunRi(year)
# 获得立春日,self.lichun
# 开始计算
d1 = dt.strptime(self.now_date, '%Y-%m-%d')
d2 = dt.strptime(self.lichun, '%Y-%m-%d')
delta = d1 - d2
day = delta.days // self.unit * self.unit
starttime = (dt.strptime(self.lichun, '%Y-%m-%d') +
datetime.timedelta(days=day)).strftime("%Y-%m-%d")
endtime = (dt.strptime(starttime, '%Y-%m-%d') +
datetime.timedelta(days=self.unit - 1)).strftime("%Y-%m-%d")
print("开始时间%s" % starttime)
print("结束时间%s" % endtime)
inputtime = str(20180215) # 输入日期
inputunit = 4 # 输入单位
input_date = Spring_Confirm(inputtime, inputunit)
input_date.LiChunRi(inputtime[0:4])
input_date.Start_End_Data()