Spaces:
Running
Running
| # -*- coding: utf-8 -*- | |
| from . import XiaoYun, LiuNian | |
| from ..util import LunarUtil | |
| class DaYun: | |
| """ | |
| 大运 | |
| """ | |
| def __init__(self, yun, index: int): | |
| self.__yun = yun | |
| self.__lunar = yun.getLunar() | |
| self.__index = index | |
| birth_year = yun.getLunar().getSolar().getYear() | |
| year = yun.getStartSolar().getYear() | |
| if index < 1: | |
| self.__startYear = birth_year | |
| self.__startAge = 1 | |
| self.__endYear = year - 1 | |
| self.__endAge = year - birth_year | |
| else: | |
| add = (index - 1) * 10 | |
| self.__startYear = year + add | |
| self.__startAge = self.__startYear - birth_year + 1 | |
| self.__endYear = self.__startYear + 9 | |
| self.__endAge = self.__startAge + 9 | |
| def getStartYear(self): | |
| return self.__startYear | |
| def getEndYear(self): | |
| return self.__endYear | |
| def getStartAge(self): | |
| return self.__startAge | |
| def getEndAge(self): | |
| return self.__endAge | |
| def getIndex(self): | |
| return self.__index | |
| def getLunar(self): | |
| return self.__lunar | |
| def getGanZhi(self): | |
| """ | |
| 获取干支 | |
| :return: 干支 | |
| """ | |
| if self.__index < 1: | |
| return "" | |
| offset = LunarUtil.getJiaZiIndex(self.__lunar.getMonthInGanZhiExact()) | |
| offset += self.__index if self.__yun.isForward() else -self.__index | |
| size = len(LunarUtil.JIA_ZI) | |
| if offset >= size: | |
| offset -= size | |
| if offset < 0: | |
| offset += size | |
| return LunarUtil.JIA_ZI[offset] | |
| def getXun(self): | |
| """ | |
| 获取所在旬 | |
| :return: 旬 | |
| """ | |
| return LunarUtil.getXun(self.getGanZhi()) | |
| def getXunKong(self): | |
| """ | |
| 获取旬空(空亡) | |
| :return: 旬空(空亡) | |
| """ | |
| return LunarUtil.getXunKong(self.getGanZhi()) | |
| def getLiuNian(self, n=10): | |
| """ | |
| 获取流年 | |
| :param n: 轮数 | |
| :return: 流年 | |
| """ | |
| if self.__index < 1: | |
| n = self.__endYear - self.__startYear + 1 | |
| liu_nian = [] | |
| for i in range(0, n): | |
| liu_nian.append(LiuNian(self, i)) | |
| return liu_nian | |
| def getXiaoYun(self, n=10): | |
| """ | |
| 获取小运 | |
| :param n: 轮数 | |
| :return: 小运 | |
| """ | |
| if self.__index < 1: | |
| n = self.__endYear - self.__startYear + 1 | |
| xiao_yun = [] | |
| for i in range(0, n): | |
| xiao_yun.append(XiaoYun(self, i, self.__yun.isForward())) | |
| return xiao_yun | |