Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2268595
  • 博文数量: 293
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2170
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(293)

分类: Python/Ruby

2020-05-14 18:31:13

说明:
PyPI 上有个 sxtwl ,可以进行农历和公历的转换,还能返回星期、生肖和天干地支,但是描述稍微有点凌乱。我整理了一下。
另外: sxtwl的生肖计算是按公历的1月1日计算的,正确的应该是以立春分割。立春日是公历的2月3 -5日,所以我单独写了个算法,以2月4日为界限计算生肖。

如何使用
1. 先安装 sxtwl
pip install sxtwl

2. 功能演示

点击(此处)折叠或打开

  1. import sxtwl

  2. lunar = sxtwl.Lunar()
  3. #下面可以使用lunar做些日历的操作


  4. # 使用前需要添加索引
  5. # 这个索引的内容可以自己定义,比如把简体字改成繁体字,或者把生肖的鼠改成老鼠。。。
  6. Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
  7. Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
  8. ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
  9. numCn = ["日", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
  10. jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪"]
  11. ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ]
  12. rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]


  13. #需要定义一个day,这个day就是你要查询的时间,这个时间可以是阳历也可以是阴历。

  14. #通过阳历获取日期信息 (这里的信息有,阴历,阳历,二十四节气,天干地支,星期几等)
  15. day = lunar.getDayBySolar(2020, 5, 24) # 查询2020年05月24日

  16. #通过阴历获取日期信息 (这里的信息有,阴历,阳历,二十四节气,天干地支,星期几等)
  17. #True 代表当前月份是闰月的月份,False 代表当前月份不是闰月
  18. day = lunar.getDayByLunar(2020, 4, 2 , False) # 查询的日期是2020年四月初二(非闰月)

  19. # 后面就用这个day 来获取自己需要的信息


  20. # 各个参数获取

  21. day.y #公历年
  22. day.m #公历月
  23. day.d #公历日

  24. ymc[day.Lmc] # 阴历月
  25. rmc[day.Ldi] # 阴历日
  26. day.Lleap # True 代表当然月是闰月,False 代表当前月不是闰月

  27. numCn[day.week] # 星期

  28. sxtwl.J2000 + day.d0 # 儒略日,是以公元前4712年1月1日为历元,[史家为公元前4713年1月1日],是一个独立的连续不间断的记日长尺,主要是天文学家在使用

  29. Gan[day.Lyear2.tg] # 天干年
  30. Zhi[day.Lyear2.dz] # 地支年
  31. Gan[day.Lmonth2.tg] # 天干月
  32. Zhi[day.Lmonth2.dz] # 地支月
  33. Gan[day.Lday2.tg] #天干日
  34. Zhi[day.Lday2.dz] #地支日
  35. day.cur_dz #距冬至的天数
  36. day.cur_xz #距夏至的天数
  37. day.cur_lq #距立秋的天数
  38. day.cur_mz #距芒种的天数
  39. day.cur_xs #距小暑的天数

  40. # 使用举例
  41. print("公历:", day.y, "年", day.m, "月", day.d, "日") #结果 公历: 2020 年 5 月 24 日

  42. if day.Lleap:
  43.     print("润", ymc[day.Lmc], "月", rmc[day.Ldi], "日")
  44. else:
  45.     print(ymc[day.Lmc], "月", rmc[day.Ldi], "日")

  46. print("儒略日:JD", sxtwl.J2000 + day.d0)
  47. print("星期", numCn[day.week])

  48. print(Gan[day.Lyear2.tg], Zhi[day.Lyear2.dz], "年", Gan[day.Lmonth2.tg], Zhi[day.Lmonth2.dz], "月",Gan[day.Lday2.tg], Zhi[day.Lday2.dz], "日")

  49. print("距冬至", day.cur_dz, "天")
  50. print("距夏至", day.cur_xz, "天")
  51. print("距立秋", day.cur_lq, "天")
  52. print("距芒种", day.cur_mz, "天")
  53. print("距小暑", day.cur_xs, "天")



计算生肖:

if day.m==2:
    if day.d <=3:
        ShengXiao = ShX[(day.y - 5)%12]
    else:
        ShengXiao = ShX[(day.y - 4)%12]
elif day.m==1:
    ShengXiao = ShX[(day.y - 5)%12]
else:
    ShengXiao = ShX[(day.y - 4)%12]
阅读(4471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~