lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具,支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶、法定节假日及调休等。
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 ( '八字' )
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 ( '' )
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 ( '' )
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 ( '' )
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( ) )
print ( "将2020-01-01修改为春节" )
HolidayUtil. fix( None , "202001011120200101" )
print ( "2020-01-01 春节 2020-01-01" == HolidayUtil. getHoliday( "2020-01-01" ) . toString( ) )
print ( "追加2099-01-01为元旦节" )
HolidayUtil. fix( None , "209901010120990101" )
print ( "2099-01-01 元旦节 2099-01-01" == HolidayUtil. getHoliday( "2099-01-01" ) . toString( ) )
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( ) ) )