migration: establish exact preserved app baseline
This commit is contained in:
Vendored
+124
@@ -0,0 +1,124 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import DaYun
|
||||
from ..util import LunarUtil
|
||||
|
||||
|
||||
class Yun:
|
||||
"""
|
||||
运
|
||||
"""
|
||||
|
||||
def __init__(self, eight_char, gender, sect=1):
|
||||
self.__lunar = eight_char.getLunar()
|
||||
self.__gender = gender
|
||||
yang = 0 == self.__lunar.getYearGanIndexExact() % 2
|
||||
man = 1 == gender
|
||||
self.__forward = (yang and man) or (not yang and not man)
|
||||
self.__compute_start(sect)
|
||||
|
||||
def __compute_start(self, sect):
|
||||
"""
|
||||
起运计算
|
||||
"""
|
||||
prev_jie = self.__lunar.getPrevJie()
|
||||
next_jie = self.__lunar.getNextJie()
|
||||
current = self.__lunar.getSolar()
|
||||
start = current if self.__forward else prev_jie.getSolar()
|
||||
end = next_jie.getSolar() if self.__forward else current
|
||||
|
||||
hour = 0
|
||||
|
||||
if 2 == sect:
|
||||
minutes = end.subtractMinute(start)
|
||||
year = int(minutes / 4320)
|
||||
minutes -= year * 4320
|
||||
month = int(minutes / 360)
|
||||
minutes -= month * 360
|
||||
day = int(minutes / 12)
|
||||
minutes -= day * 12
|
||||
hour = minutes * 2
|
||||
else:
|
||||
end_time_zhi_index = 11 if end.getHour() == 23 else LunarUtil.getTimeZhiIndex(end.toYmdHms()[11: 16])
|
||||
start_time_zhi_index = 11 if start.getHour() == 23 else LunarUtil.getTimeZhiIndex(start.toYmdHms()[11: 16])
|
||||
# 时辰差
|
||||
hour_diff = end_time_zhi_index - start_time_zhi_index
|
||||
day_diff = end.subtract(start)
|
||||
if hour_diff < 0:
|
||||
hour_diff += 12
|
||||
day_diff -= 1
|
||||
month_diff = int(hour_diff * 10 / 30)
|
||||
month = day_diff * 4 + month_diff
|
||||
day = hour_diff * 10 - month_diff * 30
|
||||
year = int(month / 12)
|
||||
month = month - year * 12
|
||||
self.__startYear = year
|
||||
self.__startMonth = month
|
||||
self.__startDay = day
|
||||
self.__startHour = hour
|
||||
|
||||
def getGender(self):
|
||||
"""
|
||||
获取性别
|
||||
:return: 性别(1男 , 0女)
|
||||
"""
|
||||
return self.__gender
|
||||
|
||||
def getStartYear(self):
|
||||
"""
|
||||
获取起运年数
|
||||
:return: 起运年数
|
||||
"""
|
||||
return self.__startYear
|
||||
|
||||
def getStartMonth(self):
|
||||
"""
|
||||
获取起运月数
|
||||
:return: 起运月数
|
||||
"""
|
||||
return self.__startMonth
|
||||
|
||||
def getStartDay(self):
|
||||
"""
|
||||
获取起运天数
|
||||
:return: 起运天数
|
||||
"""
|
||||
return self.__startDay
|
||||
|
||||
def getStartHour(self):
|
||||
"""
|
||||
获取起运小时数
|
||||
:return: 起运小时数
|
||||
"""
|
||||
return self.__startHour
|
||||
|
||||
def isForward(self):
|
||||
"""
|
||||
是否顺推
|
||||
:return: true/false
|
||||
"""
|
||||
return self.__forward
|
||||
|
||||
def getLunar(self):
|
||||
return self.__lunar
|
||||
|
||||
def getStartSolar(self):
|
||||
"""
|
||||
获取起运的阳历日期
|
||||
:return: 阳历日期
|
||||
"""
|
||||
solar = self.__lunar.getSolar()
|
||||
solar = solar.nextYear(self.__startYear)
|
||||
solar = solar.nextMonth(self.__startMonth)
|
||||
solar = solar.next(self.__startDay)
|
||||
return solar.nextHour(self.__startHour)
|
||||
|
||||
def getDaYun(self, n: int = 10):
|
||||
"""
|
||||
获取大运
|
||||
:param n: 轮数
|
||||
:return: 大运
|
||||
"""
|
||||
da_yun = []
|
||||
for i in range(0, n):
|
||||
da_yun.append(DaYun(self, i))
|
||||
return da_yun
|
||||
Reference in New Issue
Block a user