migration: establish exact preserved app baseline
This commit is contained in:
Vendored
+143
@@ -0,0 +1,143 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import Lunar, LunarMonth
|
||||
from .util import LunarUtil, FotoUtil
|
||||
|
||||
|
||||
class Foto:
|
||||
"""
|
||||
佛历
|
||||
"""
|
||||
|
||||
DEAD_YEAR = -543
|
||||
|
||||
def __init__(self, lunar):
|
||||
self.__lunar = lunar
|
||||
|
||||
@staticmethod
|
||||
def fromLunar(lunar):
|
||||
return Foto(lunar)
|
||||
|
||||
@staticmethod
|
||||
def fromYmdHms(year, month, day, hour, minute, second):
|
||||
return Foto.fromLunar(Lunar.fromYmdHms(year + Foto.DEAD_YEAR - 1, month, day, hour, minute, second))
|
||||
|
||||
@staticmethod
|
||||
def fromYmd(year, month, day):
|
||||
return Foto.fromYmdHms(year, month, day, 0, 0, 0)
|
||||
|
||||
def getLunar(self):
|
||||
return self.__lunar
|
||||
|
||||
def getYear(self):
|
||||
sy = self.__lunar.getSolar().getYear()
|
||||
y = sy - Foto.DEAD_YEAR
|
||||
if sy == self.__lunar.getYear():
|
||||
y += 1
|
||||
return y
|
||||
|
||||
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" % (abs(self.getMonth()), self.getDay())
|
||||
if md in FotoUtil.FESTIVAL:
|
||||
fs = FotoUtil.FESTIVAL[md]
|
||||
for f in fs:
|
||||
festivals.append(f)
|
||||
return festivals
|
||||
|
||||
def getOtherFestivals(self):
|
||||
"""
|
||||
获取纪念日
|
||||
:return: 非正式的节日列表,如中元节
|
||||
"""
|
||||
festivals = []
|
||||
key = "%d-%d" % (self.getMonth(), self.getDay())
|
||||
if key in FotoUtil.OTHER_FESTIVAL:
|
||||
for f in FotoUtil.OTHER_FESTIVAL[key]:
|
||||
festivals.append(f)
|
||||
return festivals
|
||||
|
||||
def isMonthZhai(self):
|
||||
m = self.getMonth()
|
||||
return 1 == m or 5 == m or 9 == m
|
||||
|
||||
def isDayYangGong(self):
|
||||
for f in self.getFestivals():
|
||||
if "杨公忌" == f.getName():
|
||||
return True
|
||||
return False
|
||||
|
||||
def isDayZhaiShuoWang(self):
|
||||
d = self.getDay()
|
||||
return 1 == d or 15 == d
|
||||
|
||||
def isDayZhaiSix(self):
|
||||
d = self.getDay()
|
||||
if 8 == d or 14 == d or 15 == d or 23 == d or 29 == d or 30 == d:
|
||||
return True
|
||||
elif 28 == d:
|
||||
m = LunarMonth.fromYm(self.__lunar.getYear(), self.getMonth())
|
||||
return m is not None and 30 != m.getDayCount()
|
||||
return False
|
||||
|
||||
def isDayZhaiTen(self):
|
||||
d = self.getDay()
|
||||
return 1 == d or 8 == d or 14 == d or 15 == d or 18 == d or 23 == d or 24 == d or 28 == d or 29 == d or 30 == d
|
||||
|
||||
def isDayZhaiGuanYin(self):
|
||||
k = "%d-%d" % (self.getMonth(), self.getDay())
|
||||
for d in FotoUtil.DAY_ZHAI_GUAN_YIN:
|
||||
if k == d:
|
||||
return True
|
||||
return False
|
||||
|
||||
def getXiu(self):
|
||||
return FotoUtil.getXiu(self.getMonth(), self.getDay())
|
||||
|
||||
def getXiuLuck(self):
|
||||
return LunarUtil.XIU_LUCK[self.getXiu()]
|
||||
|
||||
def getXiuSong(self):
|
||||
return LunarUtil.XIU_SONG[self.getXiu()]
|
||||
|
||||
def getZheng(self):
|
||||
return LunarUtil.ZHENG[self.getXiu()]
|
||||
|
||||
def getAnimal(self):
|
||||
return LunarUtil.ANIMAL[self.getXiu()]
|
||||
|
||||
def getGong(self):
|
||||
return LunarUtil.GONG[self.getXiu()]
|
||||
|
||||
def getShou(self):
|
||||
return LunarUtil.SHOU[self.getGong()]
|
||||
|
||||
def __str__(self):
|
||||
return self.toString()
|
||||
|
||||
def toString(self):
|
||||
return "%s年%s月%s" % (self.getYearInChinese(), self.getMonthInChinese(), self.getDayInChinese())
|
||||
|
||||
def toFullString(self):
|
||||
s = self.toString()
|
||||
for f in self.getFestivals():
|
||||
s += " (%s)" % f
|
||||
return s
|
||||
Reference in New Issue
Block a user