|
| 1 | +Metadata-Version: 2.1 |
| 2 | +Name: sxtwl |
| 3 | +Version: 2.0.1 |
| 4 | +Summary: sxtwl_cpp warpper for python |
| 5 | +Home-page: https://github.com/yuangu/sxtwl_cpp |
| 6 | +Author: yuangu |
| 7 | + |
| 8 | +License: BSD |
| 9 | +Description: ### 安装方法 |
| 10 | + |
| 11 | + ``` |
| 12 | + pip install sxtwl |
| 13 | + ``` |
| 14 | + |
| 15 | + 具体使用方法参考: |
| 16 | + https://pypi.org/project/sxtwl/ |
| 17 | + |
| 18 | + 本项目 [GitHub](https://github.com/yuangu/sxtwl_cpp) / [Gitee(码云)](https://gitee.com/yuangu/sxtwl)。 |
| 19 | + |
| 20 | + |
| 21 | + ### 使用方法 |
| 22 | + |
| 23 | + 1. 因为考虑到繁体和简体字的原因,所以本库不以硬编码的形式显示结果。下面是参考的简单索引 |
| 24 | + ``` |
| 25 | + Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"] |
| 26 | + Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] |
| 27 | + ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"] |
| 28 | + numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"] |
| 29 | + jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪"] |
| 30 | + ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ] |
| 31 | + rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"] |
| 32 | + XiZ = ['摩羯', '水瓶', '双鱼', '白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手'] |
| 33 | + ``` |
| 34 | + |
| 35 | + 2. 引入本库 |
| 36 | + ``` |
| 37 | + import sxtwl |
| 38 | + |
| 39 | + # 从公历年月日获取一天的信息 |
| 40 | + day = sxtwl.fromSolar(2021, 11, 7) |
| 41 | + |
| 42 | + # 从农历年月日获取一天的信息 |
| 43 | + day = sxtwl.fromLunar(2020, 12, 1) |
| 44 | + ``` |
| 45 | + |
| 46 | + 3. 获取某天的信息(这里的信息有,阴历,阳历,二十四节气,天干地支,星期几等) |
| 47 | + |
| 48 | + ``` |
| 49 | + # 公历的年月日 |
| 50 | + s = "公历:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay()) |
| 51 | + print(s) |
| 52 | + |
| 53 | + # 星期几 |
| 54 | + print(WeekCn[day.getWeek()]) |
| 55 | + |
| 56 | + # 这个月的第几周 |
| 57 | + print('该日属于这个月的第%d周'%(day.getWeekIndex(),)) |
| 58 | + |
| 59 | + # 星座(有bug?待修复) |
| 60 | + print("星座:", XiZ[day.getConstellation()]) |
| 61 | + |
| 62 | + # 以春节为界的农历(注getLunarYear如果没有传参,或者传true,是以春节为界的) |
| 63 | + s = "农历:%d年%s%d月%d日" % (day.getLunarYear(), '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay()) |
| 64 | + print(s) |
| 65 | + |
| 66 | + # 不以立春为界的农历 |
| 67 | + s = "农历:%d年%s%d月%d日" % (day.getLunarYear(False), '闰' if day.isLunarLeap() else '', day.getLunarMonth(), day.getLunarDay()) |
| 68 | + print(s) |
| 69 | + |
| 70 | + |
| 71 | + # 以春节为界的天干地支 |
| 72 | + yTG = day.getYearGZ(True) |
| 73 | + print("以春节为界的年干支", Gan[yTG.tg] + Zhi[yTG.dz]) |
| 74 | + print("以春节为界的生肖:", ShX[yTG.dz]) |
| 75 | + |
| 76 | + # 以立春为界的天干地支 (注,如果没有传参,或者传false,是以立春为界的。刚好和getLunarYear相反) |
| 77 | + yTG = day.getYearGZ() |
| 78 | + print("以立春为界的年干支", Gan[yTG.tg] + Zhi[yTG.dz]) |
| 79 | + print("以立春为界的生肖:", ShX[yTG.dz]) |
| 80 | + |
| 81 | + #月干支 |
| 82 | + mTG = day.getMonthGZ() |
| 83 | + print("月干支", Gan[mTG.tg] + Zhi[mTG.dz]) |
| 84 | + |
| 85 | + #日干支 |
| 86 | + dTG = day.getDayGZ() |
| 87 | + print("日干支", Gan[dTG.tg] + Zhi[dTG.dz]) |
| 88 | + |
| 89 | + #时干支 |
| 90 | + for hour in range(24): |
| 91 | + # 第一个参数为该天的天干,第二个参数为小时 |
| 92 | + hTG = sxtwl.getShiGz(dTG.tg, hour) |
| 93 | + print("%d时天干地支:"%(hour), Gan[hTG.tg] + Zhi[hTG.dz]) |
| 94 | + |
| 95 | + |
| 96 | + # 当日是否有节气 |
| 97 | + if day.hasJieQi(): |
| 98 | + print('节气:%s'% jqmc[day.getJieQi()]) |
| 99 | + #获取节气的儒略日数 |
| 100 | + jd = day.getJieQiJD() |
| 101 | + # 将儒略日数转换成年月日时秒 |
| 102 | + t = sxtwl.JD2DD(jd ) |
| 103 | + |
| 104 | + # 注意,t.s是小数,需要四舍五入 |
| 105 | + print("节气时间:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s))) |
| 106 | + else: |
| 107 | + print("当天不是节气日") |
| 108 | + |
| 109 | + ``` |
| 110 | + |
| 111 | + 4. 获取某日的前几天或者后几天的信息 (可以用到很多场景中) |
| 112 | + ``` |
| 113 | + # 获取某天的后面几天 |
| 114 | + num = 1 #你喜欢写多少天 也多少天,可以写负数,相当于往前 |
| 115 | + day = day.after(num) #获取num天后的日信息 |
| 116 | + s = "公历:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay()) |
| 117 | + print(s) |
| 118 | + |
| 119 | + # 同上 |
| 120 | + day = day.before(num) |
| 121 | + s = "公历:%d年%d月%d日" % (day.getSolarYear(), day.getSolarMonth(), day.getSolarDay()) |
| 122 | + print(s) |
| 123 | + ``` |
| 124 | + |
| 125 | + |
| 126 | + 5. 获取一年中的闰月 |
| 127 | + ``` |
| 128 | + # 获取一年中的闰月 |
| 129 | + year = 2020 |
| 130 | + month = sxtwl.getRunMonth(year) |
| 131 | + if month >= 0: |
| 132 | + print("%d年的闰月是%d"%(year, month) ) |
| 133 | + else: |
| 134 | + print("没有闰月") |
| 135 | + ``` |
| 136 | + |
| 137 | + 6. 获取一个农历月的天数 |
| 138 | + ``` |
| 139 | + # 一个农历月的天数 |
| 140 | + year = 2020 #农历年 |
| 141 | + month = 4 #农历月 |
| 142 | + isRun = False #是否是闰月 |
| 143 | + daynum = sxtwl.getLunarMonthNum(year, month, isRun) |
| 144 | + print("农历%d年%s%d月的天数:"%(year, '闰'if isRun else '', month), daynum) |
| 145 | + |
| 146 | + ``` |
| 147 | + |
| 148 | + 7. 儒略日数与公历的互转 |
| 149 | + ``` |
| 150 | + #儒略日数转公历 |
| 151 | + jd = sxtwl.J2000 |
| 152 | + t = sxtwl.JD2DD(jd ) |
| 153 | + |
| 154 | + #公历转儒略日 |
| 155 | + jd = sxtwl.toJD(t) |
| 156 | + ``` |
| 157 | + |
| 158 | + |
| 159 | + 8. 查找某日之前或者之后的节气 |
| 160 | + ``` |
| 161 | + # 查找某日前后的节气,此例为之后,之前把after替换成before |
| 162 | + while True: |
| 163 | + # 这里可以使用after或者before,不用担心速度,这里的计算在底层仅仅是+1这么简单 |
| 164 | + day = day.after(1) |
| 165 | + # hasJieQi的接口比getJieQiJD速度要快,你也可以使用getJieQiJD来判断是否有节气。 |
| 166 | + if day.hasJieQi(): |
| 167 | + print('节气:%s'% jqmc[day.getJieQi()]) |
| 168 | + #获取节气的儒略日数, 如果说你要计算什么时间的相距多少,直接比对儒略日要方便,相信我。 |
| 169 | + jd = day.getJieQiJD() |
| 170 | + |
| 171 | + # 将儒略日数转换成年月日时秒 |
| 172 | + t = sxtwl.JD2DD(jd ) |
| 173 | + |
| 174 | + # 注意,t.s是小数,需要四舍五入 |
| 175 | + print("节气时间:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s))) |
| 176 | + |
| 177 | + break |
| 178 | + ``` |
| 179 | + |
| 180 | + 9. 四柱反查 (好像还有bug,待修复) |
| 181 | + ``` |
| 182 | + # 四注反查 分别传的是年天干,月天干,日天干,时天干, 开始查询年,结束查询年 返回满足条件的儒略日数 |
| 183 | + jds = sxtwl.siZhu2Year(yTG, mTG, dTG, sxtwl.GZ(7, 5), 2003, 2029); |
| 184 | + for jd in jds: |
| 185 | + t = sxtwl.JD2DD(jd ) |
| 186 | + print("符合条件的时间:%d-%d-%d %d:%d:%d"%(t.Y, t.M, t.D, t.h, t.m, round(t.s))) |
| 187 | + |
| 188 | + ``` |
| 189 | + |
| 190 | + ### 联系作者及广告 |
| 191 | + |
| 192 | + 作者微信二维码: |
| 193 | +  |
| 194 | + |
| 195 | + 请您扫码支持作者的海棠万年历(广告): |
| 196 | +  |
| 197 | + |
| 198 | + 如果您想请作者喝杯奶茶,扫如下微信支付码: |
| 199 | +  |
| 200 | +Platform: UNKNOWN |
| 201 | +Description-Content-Type: text/markdown |
0 commit comments