migration: establish exact preserved app baseline
This commit is contained in:
Vendored
+130
@@ -0,0 +1,130 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import Lunar, TaoFestival
|
||||
from .util import LunarUtil, TaoUtil
|
||||
|
||||
|
||||
class Tao:
|
||||
"""
|
||||
道历
|
||||
"""
|
||||
|
||||
BIRTH_YEAR = -2697
|
||||
|
||||
def __init__(self, lunar):
|
||||
self.__lunar = lunar
|
||||
|
||||
@staticmethod
|
||||
def fromLunar(lunar):
|
||||
return Tao(lunar)
|
||||
|
||||
@staticmethod
|
||||
def fromYmdHms(year, month, day, hour, minute, second):
|
||||
return Tao.fromLunar(Lunar.fromYmdHms(year + Tao.BIRTH_YEAR, month, day, hour, minute, second))
|
||||
|
||||
@staticmethod
|
||||
def fromYmd(year, month, day):
|
||||
return Tao.fromYmdHms(year, month, day, 0, 0, 0)
|
||||
|
||||
def getLunar(self):
|
||||
return self.__lunar
|
||||
|
||||
def getYear(self):
|
||||
return self.__lunar.getYear() - Tao.BIRTH_YEAR
|
||||
|
||||
def getMonth(self):
|
||||
return self.__lunar.getMonth()
|
||||
|
||||
def getDay(self):
|
||||
return self.__lunar.getDay()
|
||||
|
||||
def getYearInChinese(self):
|
||||
y = str(self.getYear())
|
||||
s = ""
|
||||
for i in range(0, len(y)):
|
||||
s += LunarUtil.NUMBER[ord(y[i]) - 48]
|
||||
return s
|
||||
|
||||
def getMonthInChinese(self):
|
||||
return self.__lunar.getMonthInChinese()
|
||||
|
||||
def getDayInChinese(self):
|
||||
return self.__lunar.getDayInChinese()
|
||||
|
||||
def getFestivals(self):
|
||||
festivals = []
|
||||
md = "%d-%d" % (self.getMonth(), self.getDay())
|
||||
if md in TaoUtil.FESTIVAL:
|
||||
fs = TaoUtil.FESTIVAL[md]
|
||||
for f in fs:
|
||||
festivals.append(f)
|
||||
jq = self.__lunar.getJieQi()
|
||||
if "冬至" == jq:
|
||||
festivals.append(TaoFestival("元始天尊圣诞"))
|
||||
elif "夏至" == jq:
|
||||
festivals.append(TaoFestival("灵宝天尊圣诞"))
|
||||
# 八节日
|
||||
if jq in TaoUtil.BA_JIE:
|
||||
festivals.append(TaoFestival(TaoUtil.BA_JIE[jq]))
|
||||
# 八会日
|
||||
gz = self.__lunar.getDayInGanZhi()
|
||||
if gz in TaoUtil.BA_HUI:
|
||||
festivals.append(TaoFestival(TaoUtil.BA_HUI[gz]))
|
||||
return festivals
|
||||
|
||||
def __isDayIn(self, days):
|
||||
md = "%d-%d" % (self.getMonth(), self.getDay())
|
||||
for d in days:
|
||||
if md == d:
|
||||
return True
|
||||
return False
|
||||
|
||||
def isDaySanHui(self):
|
||||
return self.__isDayIn(TaoUtil.SAN_HUI)
|
||||
|
||||
def isDaySanYuan(self):
|
||||
return self.__isDayIn(TaoUtil.SAN_YUAN)
|
||||
|
||||
def isDayBaJie(self):
|
||||
return self.__lunar.getJieQi() in TaoUtil.BA_JIE
|
||||
|
||||
def isDayWuLa(self):
|
||||
return self.__isDayIn(TaoUtil.WU_LA)
|
||||
|
||||
def isDayBaHui(self):
|
||||
return self.__lunar.getDayInGanZhi() in TaoUtil.BA_HUI
|
||||
|
||||
def isDayMingWu(self):
|
||||
return "戊" == self.__lunar.getDayGan()
|
||||
|
||||
def isDayAnWu(self):
|
||||
return self.__lunar.getDayZhi() == TaoUtil.AN_WU[abs(self.getMonth()) - 1]
|
||||
|
||||
def isDayWu(self):
|
||||
return self.isDayMingWu() or self.isDayAnWu()
|
||||
|
||||
def isDayTianShe(self):
|
||||
ret = False
|
||||
mz = self.__lunar.getMonthZhi()
|
||||
dgz = self.__lunar.getDayInGanZhi()
|
||||
if mz in "寅卯辰":
|
||||
if "戊寅" == dgz:
|
||||
ret = True
|
||||
elif mz in "巳午未":
|
||||
if "甲午" == dgz:
|
||||
ret = True
|
||||
elif mz in "申酉戌":
|
||||
if "戊申" == dgz:
|
||||
ret = True
|
||||
elif mz in "亥子丑":
|
||||
if "甲子" == dgz:
|
||||
ret = True
|
||||
return ret
|
||||
|
||||
def __str__(self):
|
||||
return self.toString()
|
||||
|
||||
def toString(self):
|
||||
return "%s年%s月%s" % (self.getYearInChinese(), self.getMonthInChinese(), self.getDayInChinese())
|
||||
|
||||
def toFullString(self):
|
||||
return "道歷%s年,天运%s年,%s月,%s日。%s月%s日,%s時。" % (self.getYearInChinese(), self.__lunar.getYearInGanZhi(), self.__lunar.getMonthInGanZhi(), self.__lunar.getDayInGanZhi(), self.getMonthInChinese(), self.getDayInChinese(), self.__lunar.getTimeZhi())
|
||||
Reference in New Issue
Block a user