最新python的sxtwl日曆庫使用手冊

安裝方法

pip install sxtwl

舊工程代碼兼容 如果有已使用V1.x版本的工程,想兼容代碼

pip install sxtwl==1.1.0

或者在requirements.txt裏修改

sxtwl 1.1.0

具體使用方法參考: https://pypi.org/project/sxtwl/

本項目 GitHub / Gitee(碼雲)

使用方法

  1. 因爲考慮到繁體和簡體字的原因,所以本庫不以硬編碼的形式顯示結果。下面是參考的簡單索引
Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
Zhi = ["子", "醜", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
ShX = ["鼠", "牛", "虎", "兔", "龍", "蛇", "馬", "羊", "猴", "雞", "狗", "豬"]
numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "驚蟄", "春分", "清明", "穀雨", "立夏", "小滿", "芒種", "夏至", "小暑", "大暑", "立秋", "處暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪"]
ymc = [ "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" ]
rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", 
    "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", 
    "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]
XiZ = ['摩羯', '水瓶', '雙魚', '白羊', '金牛', '雙子', '巨蟹', '獅子', '處女', '天秤', '天蠍', '射手']
WeekCn =["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  1. 引入本庫
import  sxtwl

# 從公曆年月日獲取一天的信息 (如果需要查公元前的,年份可以使用負號表示,1800年以前的都可以查)
day = sxtwl.fromSolar(2021, 11, 7) 

# 從農曆年月日獲取一天的信息
day = sxtwl.fromLunar(2020, 12, 1)
  1. 獲取某天的信息(這裏的信息有,陰曆,陽曆,二十四節氣,天干地支,星期幾等)
# 公曆的年月日
s = "公曆:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay())
print(s)

# 星期幾
print(WeekCn[day.getWeek()])

# 這個月的第幾周
print('該日屬於這個月的第%d周'%(day.getWeekIndex(),))

# 星座(有bug?待修復)
print("星座:", XiZ[day.getConstellation()])

# 以春節爲界的農曆(注getLunarYear如果沒有傳參,或者傳true,是以春節爲界的)
s = "農曆:%d年%s%d月%d日" % (day.getLunarYear(), '閏' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)

# 不以立春爲界的農曆
s = "農曆:%d年%s%d月%d日" % (day.getLunarYear(False), '閏' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay())
print(s)


# 以春節爲界的天干地支 
yTG = day.getYearGZ(True)
print("以春節爲界的年干支", Gan[yTG.tg] + Zhi[yTG.dz]) 
print("以春節爲界的生肖:", ShX[yTG.dz])

# 以立春爲界的天干地支 (注,如果沒有傳參,或者傳false,是以立春爲界的。剛好和getLunarYear相反)
yTG = day.getYearGZ()
print("以立春爲界的年干支", Gan[yTG.tg] + Zhi[yTG.dz]) 
print("以立春爲界的生肖:", ShX[yTG.dz])

# 使用中文表示農曆
s = "農曆:%d年%s%d月%d日" % (day.getLunarYear(False), '閏' if day.isLunarLeap() else '', ymc[day.getLunarMonth() - 1], rmc[day.getLunarDay() - 1])
print(s)

#月干支
mTG = day.getMonthGZ()
print("月干支", Gan[mTG.tg] + Zhi[mTG.dz]) 

#日干支
dTG  = day.getDayGZ()
print("日干支", Gan[dTG.tg] + Zhi[dTG.dz]) 

#時干支
for hour in range(24):
    # 第一個參數爲該天的天干,第二個參數爲小時
    hTG  = sxtwl.getShiGz(dTG.tg, hour)
    print("%d時天干地支:"%(hour), Gan[hTG.tg] + Zhi[hTG.dz])


# 當日是否有節氣
if day.hasJieQi():
    print('節氣:%s'% jqmc[day.getJieQi()])
    #獲取節氣的儒略日數
    jd = day.getJieQiJD()
    # 將儒略日數轉換成年月日時秒
    t = sxtwl.JD2DD(jd )
    
    # 注意,t.s是小數,需要四捨五入
    print("節氣時間:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s)))
else:
    print("當天不是節氣日")

  1. 獲取某日的前幾天或者後幾天的信息 (可以用到很多場景中)
# 獲取某天的後面幾天
num = 1    #你喜歡寫多少天 也多少天,可以寫負數,相當於往前
day = day.after(num)  #獲取num天后的日信息
s = "公曆:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay())
print(s)

# 同上
day = day.before(num)
s = "公曆:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay())
print(s)
  1. 獲取一年中的閏月
# 獲取一年中的閏月
year = 2020
month = sxtwl.getRunMonth(year)
if month >= 0:
    print("%d年的閏月是%d"%(year, month) )
else:
    print("沒有閏月")
  1. 獲取一個農曆月的天數
# 一個農曆月的天數
year = 2020 #農曆年
month  = 4 #農曆月
isRun = False #是否是閏月
daynum = sxtwl.getLunarMonthNum(year, month, isRun)
print("農曆%d年%s%d月的天數:"%(year, '閏'if isRun else '', month), daynum)

  1. 儒略日數與公曆的互轉
#儒略日數轉公曆
jd = sxtwl.J2000
t = sxtwl.JD2DD(jd )

#公曆轉儒略日
jd = sxtwl.toJD(t)
  1. 查找某日之前或者之後的節氣
# 查找某日前後的節氣,此例爲之後,之前把after替換成before
while True:
    # 這裏可以使用after或者before,不用擔心速度,這裏的計算在底層僅僅是+1這麼簡單
    day = day.after(1)
    # hasJieQi的接口比getJieQiJD速度要快,你也可以使用getJieQiJD來判斷是否有節氣。
    if day.hasJieQi():
        print('節氣:%s'% jqmc[day.getJieQi()])
        #獲取節氣的儒略日數, 如果說你要計算什麼時間的相距多少,直接比對儒略日要方便,相信我。
        jd = day.getJieQiJD()
    
        # 將儒略日數轉換成年月日時秒
        t = sxtwl.JD2DD(jd )
        
        # 注意,t.s是小數,需要四捨五入
        print("節氣時間:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s)))
        
        break
  1. 四柱反查 (好像還有bug,待修復)
# 四注反查 分別傳的是年天干,月天干,日天干,時天干, 開始查詢年,結束查詢年  返回滿足條件的儒略日數
jds = sxtwl.siZhu2Year(yTG, mTG, dTG, sxtwl.GZ(7, 5), 2003, 2029);
for jd in jds:
    t = sxtwl.JD2DD(jd )
    print("符合條件的時間:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s)))

聯繫作者及廣告

作者微信二維碼:

微信二維碼

請您掃碼支持作者的海棠萬年曆(廣告):

海棠萬年曆

如果您想請作者喝杯奶茶,掃如下微信支付碼:

微信收款

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章