当前位置: 首页 > news >正文

lunar是一款无第三方依赖的公历 python调用

lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具,支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶、法定节假日及调休等。

# -*- coding: utf-8 -*-
from lunar_python import Lunar, Solar
from lunar_python.util import HolidayUtil
from datetime import datetime

# 节气表
print('节气表')
lunar = Solar.fromYmd(2025, 1, 1).getLunar()
jieQi = lunar.getJieQiTable()
for k in lunar.getJieQiList():
    print(k + ' = ' + jieQi[k].toYmdHms())
print('')
# 月相
#print(lunar.getMonthZhiGong())
# 八字
print('八字')
baZi = lunar.getEightChar()
print(baZi.getYear() + ' ' + baZi.getMonth() + ' ' + baZi.getDay() + ' ' + baZi.getTime())

# 八字五行
print('八字五行')
print(baZi.getYearWuXing() + ' ' + baZi.getMonthWuXing() + ' ' + baZi.getDayWuXing() + ' ' + baZi.getTimeWuXing())

# 八字天干十神
print('八字天干十神')
print(baZi.getYearShiShenGan() + ' ' + baZi.getMonthShiShenGan() + ' ' + baZi.getDayShiShenGan() + ' ' + baZi.getTimeShiShenGan())

# 八字地支十神
print('八字地支十神')
print(baZi.getYearShiShenZhi()[0] + ' ' + baZi.getMonthShiShenZhi()[0] + ' ' + baZi.getDayShiShenZhi()[0] + ' ' + baZi.getTimeShiShenZhi()[0])

# 遍历八字年支十神
print('八字天干十神')
for v in baZi.getYearShiShenZhi():
    print(v)
print('')

# 遍历八字月支十神
print
for v in baZi.getMonthShiShenZhi():
    print(v)
print('')

# 遍历八字日支十神
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()

# 女运
print('女运')
yun = baZi.getYun(0)
print('阳历' + solar.toYmdHms() + '出生')
print('出生' + str(yun.getStartYear()) + '年' + str(yun.getStartMonth()) + '个月' + str(yun.getStartDay()) + '天后起运')
print('阳历' + yun.getStartSolar().toYmd() + '后起运')
print('')

# 大运
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] 流年
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] 小运
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] 流月
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('')

# 通过指定年月日初始化阴历
print
lunar = Lunar.fromYmd(1986, 4, 21)

# 打印阴历
print("打印阴历")
print(lunar.toFullString())

# 阴历转阳历并打印
print("阴历转阳历并打印")
print(lunar.getSolar().toFullString())

# 节假日信息
print("节假日信息")
print(HolidayUtil.getHoliday('2020-05-02'))

# 儒略日
print("儒略日")
solar = Solar.fromYmd(2020, 7, 15)
print(solar.getJulianDay())

solar = Solar.fromJulianDay(2459045.5)
print(solar.toYmdHms())
print('')

# 八字转阳历
print("八字转阳历")
for d in Solar.fromBaZi("庚子", "戊子", "己卯", "庚午"):
    print(d.toFullString())

date = Solar.fromYmd(2020, 1, 23)
print("2020-01-24" == date.next(1).toString())
# 仅工作日,跨越春节假期
print(" 仅工作日,跨越春节假期")
print("2020-02-03" == date.next(1, True).toString())

date = Solar.fromYmd(2020, 2, 3)
print("2020-01-31" == date.next(-3).toString())
# 仅工作日,跨越春节假期
print("仅工作日,跨越春节假期")
print("2020-01-21" == date.next(-3, True).toString())

date = Solar.fromYmd(2020, 2, 9)
print("2020-02-15" == date.next(6).toString())
# 仅工作日,跨越周末
print("仅工作日,跨越周末")
print("2020-02-17" == date.next(6, True).toString())

date = Solar.fromYmd(2020, 1, 17)
print("2020-01-18" == date.next(1).toString())
# 仅工作日,周日调休按上班算
print("仅工作日,周日调休按上班算")
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修改为春节
print("将2020-01-01修改为春节")
HolidayUtil.fix(None, "202001011120200101")
print("2020-01-01 春节 2020-01-01" == HolidayUtil.getHoliday("2020-01-01").toString())

# 追加2099-01-01为元旦节
print("追加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为元旦节
print("将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())

# 更改节假日名称
print("更改节假日名称")
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())

# 追加节假日名称和数据
print("追加节假日名称和数据")
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())

# 节日
print("节日")
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])

# 旬
print("旬")
solar = Solar.fromYmdHms(2020, 11, 19, 0, 0, 0)
lunar = solar.getLunar()
# 甲午
print("甲午")
print(lunar.getYearXun())

# 旬空(空亡)
print("旬空(空亡)")
# 辰巳
print("辰巳")
print(lunar.getYearXunKong())
# 午未
print("午未")
print(lunar.getMonthXunKong())
# 戌亥
print("戌亥")
print(lunar.getDayXunKong())

# 八字日柱旬空(空亡)
print("八字日柱旬空(空亡)")
solar = Solar.fromYmdHms(1990, 12, 23, 8, 37, 0)
lunar = solar.getLunar()
eightChar = lunar.getEightChar()
# 子丑
print("子丑")
print(eightChar.getDayXunKong())

# 数九
print("数九")
lunar = Lunar.fromDate(datetime.now())
print(lunar.getShuJiu())

# 三伏
print("三伏")
solar = Solar.fromYmd(2020, 8, 24)
lunar = solar.getLunar()
print(lunar.getFu().toFullString())

# 六曜
print("六曜")
lunar = Lunar.fromDate(datetime.now())
print(lunar.getLiuYao())

# 物候
print("物候")
print(lunar.getWuHou())

# 日九星
print("日九星")
print(lunar.getDayNineStar())

# 年太岁
print("年太岁")
print(lunar.getYearPositionTaiSui())
print(lunar.getYearPositionTaiSuiDesc())

# 月太岁
print("月太岁")
print(lunar.getMonthPositionTaiSui())
print(lunar.getMonthPositionTaiSuiDesc())

# 日太岁
print("日太岁")
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()))

相关文章:

  • OSCP - Proving Grounds- CVE-2023-46818
  • 5-1 使用ECharts将MySQL数据库中的数据可视化
  • NLua 文档
  • Facebook的社交媒体伦理:信息传播与责任的平衡
  • Java集成MQTT和Kafka实现稳定、可靠、高性能的物联网消息处理系统
  • C语言未定义的标识符怎么解决
  • [创业之路-340]:投资的本质:前人栽树后人乘凉。企业固定资产投资
  • 论文速递| ECG去噪新方法:小波+ CNN提升可穿戴精度
  • Uni-App 双栏联动滚动组件开发详解 (电梯导航)
  • 【JVM】性能监控与调优概述篇
  • 面试提问:数仓设计不分层可以吗?
  • 关于 51 单片机显示多个数码管时出现残影
  • 基于springboot的高校心理教育辅导系统(019)
  • Django之旅:第二节--启动运行django
  • ffmpeg+ubuntu编译库(完整版本)
  • 基于javaweb的SpringBoot时装购物系统设计与实现(源码+文档+部署讲解)
  • 常见业务分析模型
  • 3D开发工具HOOPS SDK:赋能CAM软件开发的利器
  • 美团Leaf分布式ID生成器:使用详解与核心原理解析
  • debian12运行sql server2022(docker):导入.MDF .LDF文件到容器
  • 上海迪士尼蜘蛛侠主题园区正式动工,毗邻“疯狂动物城”
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套
  • 雷军内部演讲回应质疑:在不服输、打不倒方面,没人比我们更有耐心
  • 九江宜春领导干部任前公示,3人拟提名为县(市、区)长候选人
  • 秘鲁总统任命前司法部长阿拉纳为新总理
  • 订婚不等于性同意!山西订婚强奸案入选最高法案例