migration: establish exact preserved app baseline
This commit is contained in:
Vendored
+171
@@ -0,0 +1,171 @@
|
||||
# -*- 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
|
||||
|
||||
@staticmethod
|
||||
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)
|
||||
Reference in New Issue
Block a user