def getShenChenBaZi(year, month, day, time): data = ganzhi.day(year, month, day) print("data is neeed" + str(data)) tianganOfDay = data[2] tianganOfDaySymbol = tiangans.index(tianganOfDay) + 1 ganzhiOfTime = calculateTime(tianganOfDaySymbol, time) return data[0] + '-' + ganzhiOfTime
def build_Dayun(english_year, english_month, english_day, hour, minutes, sex: int): ''' :param english_year: :param english_month: :param english_day: :param hour: :param minutes: :param sex: 1 是男,0 是女 :return: ''' lunar = ganzhi.day(english_year, english_month, english_day) bazi = metaphysic.getShenChenBaZi(english_year, english_month, english_day, hour) lunar_year = lunar[4] order = lunar_year % 2 ^ sex # 判断是正序还是逆序 birth_day = datetime.datetime(english_year, english_month, english_day, hour, minutes) cur_year_of_jieqi = build_jieqi_list(english_year) if english_month == 1 and not order: pre_year_jieqi = build_jieqi(english_year - 1)[-1] cur_year_of_jieqi.insert(0, pre_year_jieqi) if english_month == 12 and order: next_year_jieqi = build_jieqi(english_year + 1)[0] cur_year_of_jieqi.append(next_year_jieqi) # 防止逆序查找的时候,没有比生日大的节气,故使用最后一个元素初始化 cur_jieqi = cur_year_of_jieqi[len(cur_year_of_jieqi) - 1] for i in range(0, len(cur_year_of_jieqi)): if cur_year_of_jieqi[i] > birth_day: cur_jieqi = (cur_year_of_jieqi[i] if order else cur_year_of_jieqi[i - 1]) break print(cur_jieqi) delta_diff = (cur_jieqi - birth_day if order else birth_day - cur_jieqi) shichen = delta_diff.seconds // 60 // 120 fenzhong = delta_diff.seconds // 60 % 120 qiyun_shichen = fenzhong qiyun_tian = shichen * 10 qiyun_yue = delta_diff.days % 3 qiyun_sui = delta_diff.days // 3 new_form = tuple( reversed( modify_qiyun_format(qiyun_shichen, qiyun_tian, qiyun_yue * 4, qiyun_sui))) print(bazi) print(lunar) print(new_form) print("您出生后 %d年%d月%d日 %d时辰后 起运" % new_form) print(get_niunian_list(bazi, order))