# -*- coding: utf-8 -*- from lunar_python import Lunar, Solar from lunar_python.util import HolidayUtil from datetime import datetime # 节气表 lunar = Solar.fromYmd(2022, 7, 15).getLunar() jieQi = lunar.getJieQiTable() for k in lunar.getJieQiList(): print(k + ' = ' + jieQi[k].toYmdHms()) print('') # 八字 baZi = lunar.getEightChar() print(baZi.getYear() + ' ' + baZi.getMonth() + ' ' + baZi.getDay() + ' ' + baZi.getTime()) # 八字五行 print(baZi.getYearWuXing() + ' ' + baZi.getMonthWuXing() + ' ' + baZi.getDayWuXing() + ' ' + baZi.getTimeWuXing()) # 八字天干十神 print(baZi.getYearShiShenGan() + ' ' + baZi.getMonthShiShenGan() + ' ' + baZi.getDayShiShenGan() + ' ' + baZi.getTimeShiShenGan()) # 八字地支十神 print(baZi.getYearShiShenZhi()[0] + ' ' + baZi.getMonthShiShenZhi()[0] + ' ' + baZi.getDayShiShenZhi()[0] + ' ' + baZi.getTimeShiShenZhi()[0]) # 遍历八字年支十神 for v in baZi.getYearShiShenZhi(): print(v) print('') # 遍历八字月支十神 for v in baZi.getMonthShiShenZhi(): print(v) print('') # 遍历八字日支十神 for v in baZi.getDayShiShenZhi(): print(v) print('') # 遍历八字时支十神 for v in baZi.getTimeShiShenZhi(): print(v) print('') solar = Solar(1988, 2, 15, 23, 30, 0) lunar = solar.getLunar() baZi = lunar.getEightChar() print(baZi.getYear() + ' ' + baZi.getMonth() + ' ' + baZi.getDay() + ' ' + baZi.getTime()) solar = Solar(1983, 2, 15, 20, 0, 0) lunar = solar.getLunar() baZi = lunar.getEightChar() # 女运 yun = baZi.getYun(0) print('阳历' + solar.toYmdHms() + '出生') print('出生' + str(yun.getStartYear()) + '年' + str(yun.getStartMonth()) + '个月' + str(yun.getStartDay()) + '天后起运') print('阳历' + yun.getStartSolar().toYmd() + '后起运') print('') # 大运 daYunArr = yun.getDaYun() for i in range(0, len(daYunArr)): daYun = daYunArr[i] print('大运[' + str(i) + '] ' + str(daYun.getStartYear()) + '年 ' + str(daYun.getStartAge()) + '岁 ' + daYun.getGanZhi()) print('') # 大运[0] 流年 liuNianArr = daYunArr[0].getLiuNian() for i in range(0, len(liuNianArr)): liuNian = liuNianArr[i] print('流年[' + str(i) + '] ' + str(liuNian.getYear()) + '年 ' + str(liuNian.getAge()) + '岁 ' + liuNian.getGanZhi()) print('') # 大运[0] 小运 xiaoYunArr = daYunArr[0].getXiaoYun() for i in range(0, len(xiaoYunArr)): xiaoYun = xiaoYunArr[i] print('小运[' + str(i) + '] ' + str(xiaoYun.getYear()) + '年 ' + str(xiaoYun.getAge()) + '岁 ' + xiaoYun.getGanZhi()) print('') # 流年[0] 流月 liuYueArr = liuNianArr[0].getLiuYue() for i in range(0, len(liuYueArr)): liuYue = liuYueArr[i] print('流月[' + str(i) + '] ' + str(liuYue.getMonthInChinese()) + '月 ' + liuYue.getGanZhi()) print('') # 通过指定年月日初始化阴历 lunar = Lunar.fromYmd(1986, 4, 21) # 打印阴历 print(lunar.toFullString()) # 阴历转阳历并打印 print(lunar.getSolar().toFullString()) # 节假日信息 print(HolidayUtil.getHoliday('2020-05-02')) # 儒略日 solar = Solar.fromYmd(2020, 7, 15) print(solar.getJulianDay()) solar = Solar.fromJulianDay(2459045.5) print(solar.toYmdHms()) print('') # 八字转阳历 for d in Solar.fromBaZi("庚子", "戊子", "己卯", "庚午"): print(d.toFullString()) date = Solar.fromYmd(2020, 1, 23) print("2020-01-24" == date.next(1).toString()) # 仅工作日,跨越春节假期 print("2020-02-03" == date.next(1, True).toString()) date = Solar.fromYmd(2020, 2, 3) print("2020-01-31" == date.next(-3).toString()) # 仅工作日,跨越春节假期 print("2020-01-21" == date.next(-3, True).toString()) date = Solar.fromYmd(2020, 2, 9) print("2020-02-15" == date.next(6).toString()) # 仅工作日,跨越周末 print("2020-02-17" == date.next(6, True).toString()) date = Solar.fromYmd(2020, 1, 17) print("2020-01-18" == date.next(1).toString()) # 仅工作日,周日调休按上班算 print("2020-01-19" == date.next(1, True).toString()) print("2020-01-01 元旦节 2020-01-01" == HolidayUtil.getHoliday("2020-01-01").toString()) # 将2020-01-01修改为春节 HolidayUtil.fix(None, "202001011120200101") print("2020-01-01 春节 2020-01-01" == HolidayUtil.getHoliday("2020-01-01").toString()) # 追加2099-01-01为元旦节 HolidayUtil.fix(None, "209901010120990101") print("2099-01-01 元旦节 2099-01-01" == HolidayUtil.getHoliday("2099-01-01").toString()) # 将2020-01-01修改为春节,并追加2099-01-01为元旦节 HolidayUtil.fix(None, "202001011120200101209901010120990101") print("2020-01-01 春节 2020-01-01" == HolidayUtil.getHoliday("2020-01-01").toString()) print("2099-01-01 元旦节 2099-01-01" == HolidayUtil.getHoliday("2099-01-01").toString()) # 更改节假日名称 names = [] for i in range(0, len(HolidayUtil.NAMES)): names.append(HolidayUtil.NAMES[i]) names[0] = "元旦" names[1] = "大年初一" HolidayUtil.fix(names, None) print("2020-01-01 大年初一 2020-01-01" == HolidayUtil.getHoliday("2020-01-01").toString()) print("2099-01-01 元旦 2099-01-01" == HolidayUtil.getHoliday("2099-01-01").toString()) # 追加节假日名称和数据 names = [] for i in range(0, len(HolidayUtil.NAMES)): names.append(HolidayUtil.NAMES[i]) names.append("我的生日") names.append("结婚纪念日") names.append("她的生日") HolidayUtil.fix(names, "20210529912021052920211111:12021111120211201;120211201") print("2021-05-29 我的生日 2021-05-29" == HolidayUtil.getHoliday("2021-05-29").toString()) print("2021-11-11 结婚纪念日 2021-11-11" == HolidayUtil.getHoliday("2021-11-11").toString()) print("2021-12-01 她的生日 2021-12-01" == HolidayUtil.getHoliday("2021-12-01").toString()) # 节日 solar = Solar.fromYmd(2020, 11, 26) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) solar = Solar.fromYmd(2020, 6, 21) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) solar = Solar.fromYmd(2021, 5, 9) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) solar = Solar.fromYmd(1986, 11, 27) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) solar = Solar.fromYmd(1985, 6, 16) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) solar = Solar.fromYmd(1984, 5, 13) festivals = solar.getFestivals() for i in range(0, len(festivals)): print(festivals[i]) # 旬 solar = Solar.fromYmdHms(2020, 11, 19, 0, 0, 0) lunar = solar.getLunar() # 甲午 print(lunar.getYearXun()) # 旬空(空亡) # 辰巳 print(lunar.getYearXunKong()) # 午未 print(lunar.getMonthXunKong()) # 戌亥 print(lunar.getDayXunKong()) # 八字日柱旬空(空亡) solar = Solar.fromYmdHms(1990, 12, 23, 8, 37, 0) lunar = solar.getLunar() eightChar = lunar.getEightChar() # 子丑 print(eightChar.getDayXunKong()) # 数九 lunar = Lunar.fromDate(datetime.now()) print(lunar.getShuJiu()) # 三伏 solar = Solar.fromYmd(2020, 8, 24) lunar = solar.getLunar() print(lunar.getFu().toFullString()) # 六曜 lunar = Lunar.fromDate(datetime.now()) print(lunar.getLiuYao()) # 物候 print(lunar.getWuHou()) # 日九星 print(lunar.getDayNineStar()) # 年太岁 print(lunar.getYearPositionTaiSui()) print(lunar.getYearPositionTaiSuiDesc()) # 月太岁 print(lunar.getMonthPositionTaiSui()) print(lunar.getMonthPositionTaiSuiDesc()) # 日太岁 print(lunar.getDayPositionTaiSui()) print(lunar.getDayPositionTaiSuiDesc()) times = lunar.getTimes() for i in range(0, len(times)): time = times[i] print("%s - %s : %s" % (time.getMinHm(), time.getMaxHm(), time.toString()))