python-週報月報季報年報


    def calculate_date(self):
        start_date = self.start_date
        print(start_date)
        date_lst = []
        if start_date.weekday() == 0:
            week_end_date = start_date - datetime.timedelta(1)
            week_start_date = start_date - datetime.timedelta(7)

            date_lst.append((week_start_date, week_end_date, week_end_date, self.week))

        if start_date.day == 3:
            month_end_date = start_date - datetime.timedelta(3)
            month_start_date = datetime.date(month_end_date.year, month_end_date.month, 1)
            date_lst.append((month_start_date, month_end_date, month_end_date, self.month))

        if start_date.month in [1, 4, 7, 10] and start_date.day == 3:

            season_dic = {1: [datetime.date(start_date.year - 1, 10, 1), datetime.date(start_date.year - 1, 12, 31),
                              datetime.date(start_date.year - 1, 12, 31)],
                          4: [datetime.date(start_date.year, 1, 1), datetime.date(start_date.year, 3, 31),
                              datetime.date(start_date.year, 3, 31)],
                          7: [datetime.date(start_date.year, 4, 1), datetime.date(start_date.year, 6, 30),
                              datetime.date(start_date.year, 6, 30)],
                          10: [datetime.date(start_date.year, 7, 1), datetime.date(start_date.year, 9, 30),
                               datetime.date(start_date.year, 9, 30)]
                          }
            season_date_lis = season_dic.get(start_date.month)

            date_lst.append((season_date_lis[0], season_date_lis[1], season_date_lis[2], self.season))

        if start_date.month is 1 and start_date.day == 3:
            year_start_date = datetime.date(start_date.year - 1, 1, 1)
            year_end_date = datetime.date(start_date.year - 1, 12, 31)
            year_save_date = datetime.date(start_date.year - 1, 12, 31)
            date_lst.append((year_start_date, year_end_date, year_save_date, self.year))
        if date_lst:
            self.start_date = min([i[0] for i in date_lst])
        return date_lst