没意思,发个题,解解闷

问题:

  • 以每年的立春作为起始点,每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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值