Spaces:
Running
Running
| # -*- coding: utf-8 -*- | |
| from . import NineStar | |
| from .util import LunarUtil | |
| class LunarTime: | |
| """ | |
| 时辰 | |
| """ | |
| def __init__(self, lunar_year, lunar_month, lunar_day, hour, minute, second): | |
| from . import Lunar | |
| self.__lunar = Lunar.fromYmdHms(lunar_year, lunar_month, lunar_day, hour, minute, second) | |
| self.__zhiIndex = LunarUtil.getTimeZhiIndex("%02d:%02d" % (hour, minute)) | |
| self.__ganIndex = (self.__lunar.getDayGanIndexExact() % 5 * 2 + self.__zhiIndex) % 10 | |
| def fromYmdHms(lunar_year, lunar_month, lunar_day, hour, minute, second): | |
| return LunarTime(lunar_year, lunar_month, lunar_day, hour, minute, second) | |
| def getGan(self): | |
| return LunarUtil.GAN[self.__ganIndex + 1] | |
| def getZhi(self): | |
| return LunarUtil.ZHI[self.__zhiIndex + 1] | |
| def getGanZhi(self): | |
| return "%s%s" % (self.getGan(), self.getZhi()) | |
| def getShengXiao(self): | |
| return LunarUtil.SHENGXIAO[self.__zhiIndex + 1] | |
| def getPositionXi(self): | |
| return LunarUtil.POSITION_XI[self.__ganIndex + 1] | |
| def getPositionXiDesc(self): | |
| return LunarUtil.POSITION_DESC[self.getPositionXi()] | |
| def getPositionYangGui(self): | |
| return LunarUtil.POSITION_YANG_GUI[self.__ganIndex + 1] | |
| def getPositionYangGuiDesc(self): | |
| return LunarUtil.POSITION_DESC[self.getPositionYangGui()] | |
| def getPositionYinGui(self): | |
| return LunarUtil.POSITION_YIN_GUI[self.__ganIndex + 1] | |
| def getPositionYinGuiDesc(self): | |
| return LunarUtil.POSITION_DESC[self.getPositionYinGui()] | |
| def getPositionFu(self, sect=2): | |
| return (LunarUtil.POSITION_FU if 1 == sect else LunarUtil.POSITION_FU_2)[self.__ganIndex + 1] | |
| def getPositionFuDesc(self, sect=2): | |
| return LunarUtil.POSITION_DESC[self.getPositionFu(sect)] | |
| def getPositionCai(self): | |
| return LunarUtil.POSITION_CAI[self.__ganIndex + 1] | |
| def getPositionCaiDesc(self): | |
| return LunarUtil.POSITION_DESC[self.getPositionCai()] | |
| def getChong(self): | |
| return LunarUtil.CHONG[self.__zhiIndex] | |
| def getChongGan(self): | |
| return LunarUtil.CHONG_GAN[self.__ganIndex] | |
| def getChongGanTie(self): | |
| return LunarUtil.CHONG_GAN_TIE[self.__ganIndex] | |
| def getChongShengXiao(self): | |
| chong = self.getChong() | |
| for i in range(0, len(LunarUtil.ZHI)): | |
| if LunarUtil.ZHI[i] == chong: | |
| return LunarUtil.SHENGXIAO[i] | |
| return "" | |
| def getChongDesc(self): | |
| return "(" + self.getChongGan() + self.getChong() + ")" + self.getChongShengXiao() | |
| def getSha(self): | |
| return LunarUtil.SHA[self.getZhi()] | |
| def getNaYin(self): | |
| return LunarUtil.NAYIN[self.getGanZhi()] | |
| def getTianShen(self): | |
| return LunarUtil.TIAN_SHEN[(self.__zhiIndex + LunarUtil.ZHI_TIAN_SHEN_OFFSET[self.__lunar.getDayZhiExact()]) % 12 + 1] | |
| def getTianShenType(self): | |
| return LunarUtil.TIAN_SHEN_TYPE[self.getTianShen()] | |
| def getTianShenLuck(self): | |
| return LunarUtil.TIAN_SHEN_TYPE_LUCK[self.getTianShenType()] | |
| def getYi(self): | |
| """ | |
| 获取时宜 | |
| :return: 宜 | |
| """ | |
| return LunarUtil.getTimeYi(self.__lunar.getDayInGanZhiExact(), self.getGanZhi()) | |
| def getJi(self): | |
| """ | |
| 获取时忌 | |
| :return: 忌 | |
| """ | |
| return LunarUtil.getTimeJi(self.__lunar.getDayInGanZhiExact(), self.getGanZhi()) | |
| def getNineStar(self): | |
| solar_ymd = self.__lunar.getSolar().toYmd() | |
| jie_qi = self.__lunar.getJieQiTable() | |
| asc = False | |
| if jie_qi["冬至"] <= solar_ymd < jie_qi["夏至"]: | |
| asc = True | |
| start = 7 if asc else 3 | |
| day_zhi = self.__lunar.getDayZhi() | |
| if day_zhi in "子午卯酉": | |
| start = 1 if asc else 9 | |
| elif day_zhi in "辰戌丑未": | |
| start = 4 if asc else 6 | |
| index = start + self.__zhiIndex - 1 if asc else start - self.__zhiIndex - 1 | |
| if index > 8: | |
| index -= 9 | |
| if index < 0: | |
| index += 9 | |
| return NineStar.fromIndex(index) | |
| def getGanIndex(self): | |
| return self.__ganIndex | |
| def getZhiIndex(self): | |
| return self.__zhiIndex | |
| def __str__(self): | |
| return self.toString() | |
| def toString(self): | |
| return self.getGanZhi() | |
| def getXun(self): | |
| """ | |
| 获取时辰所在旬 | |
| :return: 旬 | |
| """ | |
| return LunarUtil.getXun(self.getGanZhi()) | |
| def getXunKong(self): | |
| """ | |
| 获取值时空亡 | |
| :return: 空亡(旬空) | |
| """ | |
| return LunarUtil.getXunKong(self.getGanZhi()) | |
| def getMinHm(self): | |
| hour = self.__lunar.getHour() | |
| if hour < 1: | |
| return "00:00" | |
| elif hour > 22: | |
| return "23:00" | |
| return "%02d:00" % (hour - 1 if hour % 2 == 0 else hour) | |
| def getMaxHm(self): | |
| hour = self.__lunar.getHour() | |
| if hour < 1: | |
| return "00:59" | |
| elif hour > 22: | |
| return "23:59" | |
| return "%02d:59" % (hour + 1 if hour % 2 != 0 else hour) | |