main.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

#给出阳历日期转换成阴历日期

import math

from daysbetween import my_distance_DAY

def GetDayOf(st):

#–天干名称

cTianGan = ["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]

#–地支名称

cDiZhi = ["子","丑","寅","卯","辰","巳","午", "未","申","酉","戌","亥"]

#–属相名称

cShuXiang = ["鼠","牛","虎","兔","龙","蛇", "马","羊","猴","鸡","狗","猪"]

#–农历日期名

cDayName =[

"*","初一","初二","初三","初四","初五",

"初六","初七","初八","初九","初十",

"十一","十二","十三","十四","十五",

"十六","十七","十八","十九","二十",

"廿一","廿二","廿三","廿四","廿五",

"廿六","廿七","廿八","廿九","三十"

]

#–农历月份名

cMonName = ["*","正","二","三","四","五","六", "七","八","九","十","冬","腊"]

#–公历每月前面的天数

wMonthAdd = [0,31,59,90,120,151,181,212,243,273,304,334]

#– 农历数据

wNongliData = [2635,333387,1701,1748,267701,694,2391,133423,1175,396438

,3402,3749,331177,1453,694,201326,2350,465197,3221,3402

,400202,2901,1386,267611,605,2349,137515,2709,464533,1738

,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762

,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413

,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395

,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031

,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222

,268949,3402,3493,133973,1386,464219,605,2349,334123,2709

,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877]

#—取当前公历年、月、日—

wCurYear = st["year"]

wCurMonth = st["mon"]

wCurDay = st["day"]

#—计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)—

nTheDate = (wCurYear - 1921) * 365 + (wCurYear - 1921)/4 + wCurDay + wMonthAdd[wCurMonth-1] - 38

if (((wCurYear % 4) == 0) and (wCurMonth > 2)):

nTheDate = nTheDate + 1

#–计算农历天干、地支、月、日—

nIsEnd = 0

m = 0

while nIsEnd != 1:

#if wNongliData[m+1] < 4095:

if wNongliData[m] < 4095:

k = 11

else:

k = 12

n = k

while n>=0:

nBit = wNongliData[m]

for i in range(n):

nBit = math.floor(nBit/2);

nBit = nBit % 2

if nTheDate <= (29 + nBit):

nIsEnd = 1

break

nTheDate = nTheDate - 29 - nBit

n = n - 1

if nIsEnd != 0:

break

m = m + 1

wCurYear = 1921 + m

wCurMonth = k - n + 1

wCurDay = int(math.floor(nTheDate))

if k == 12:

if wCurMonth == wNongliData[m] / 65536 + 1:

wCurMonth = 1 - wCurMonth

elif wCurMonth > wNongliData[m] / 65536 + 1:

wCurMonth = wCurMonth - 1

#print '阳历', st["year"], st["mon"], st["day"]

#用数字形式显示农历:

#print '农历', wCurYear, wCurMonth, wCurDay

#–生成农历天干、地支、属相 ==> wNongli–

szShuXiang = cShuXiang[((wCurYear - 4) % 60) % 12]

zNongli = szShuXiang + '(' + cTianGan[(((wCurYear - 4) % 60) % 10)] + cDiZhi[(((wCurYear - 4) % 60) % 12)] + ')年'

#print "农历%s(%s%s)年%s"%(szShuXiang,cTianGan[((wCurYear - 4) % 60) % 10],cDiZhi[((wCurYear - 4) % 60) % 12],szNongliDay)

#–生成农历月、日 ==> wNongliDay–*/

if wCurMonth < 1:

szNongliDay = "闰" + cMonName[(-1 * wCurMonth)]

else:

szNongliDay = cMonName[wCurMonth]

szNongliDay = szNongliDay + "月" + cDayName[wCurDay]

#print "农历%s(%s%s)年%s"%(szShuXiang,cTianGan[((wCurYear - 4) % 60) % 10],cDiZhi[((wCurYear - 4) % 60) % 12],szNongliDay)

#print '农历',szNongliDay

#return szNongli .. szNongliDay

return szNongliDay

#阳历转阴历 2017/10/9

def chg_yinli(day_yangli="1988/12/19"):

st = {"year": 2017, "mon": 10, "day": 9}

#print str(day_yangli).split('/')[0]

st['year']=int(str(day_yangli).split('/')[0])

#print st['year']

st['mon']=int(str(day_yangli).split('/')[1])

st['day']=int(str(day_yangli).split('/')[2])

#print st

day_yinli=GetDayOf(st)

return day_yinli

python公历转农历_python 阳历转阴历代码(2)相关推荐

  1. python公历转农历_Python如何实现阳历转阴历的方法分享

    这篇文章主要介绍了Python实现公历(阳历)转农历(阴历)的方法,涉及农历算法原理及Python日期运算相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现公历(阳历)转农历(阴历)的 ...

  2. uniApp实现公农日历相互转换、公历、农历、阳历、阴历、calendar

    文章目录 前言 版本一 版本二 效果图 第一步,git下载组件 版本一 版本二 第二步,下载依赖包 第三步,使用 版本一 版本二 总结 版本一 版本二 微信小程序查看效果 关于js-calendar- ...

  3. PB中公历与农历(阳历与阴历)的互相转换——主要是农历转公历(阴历转阳历)

    PB中关于公历转农历的算法,网上有很多,思路也大致一样,在这里我就不再进行说明了. 本文主要是想跟所有PB爱好者,分享农历转公历的方法. 转换思路为:根据传入的农历日期,找到第一个小于传入日期的基准日 ...

  4. python公历转农历_python有没有能实现公历转换农历的库

    展开全部 有啊.pip里有一个sxtwl的库.很方便的 pip install sxtwl  就能安装了. 如果是Windows用户,可以使用作者提供的二进制安装包: 下面是转换的例子import   ...

  5. 关于“1900年至2100年公历、农历互转的js代码”的详细分析

    今天讲的是对1900年至2100年公历.农历互转的js代码进行详细分析! 首先来看一下js里面的方法都得到了哪些有用的数据--这里直接在html文档里面引入该js文件,然后调用对应的方法: <s ...

  6. Python公历转换农历及简易万年历

    一般使用的万年历,只提供距今前后百年的日历.这是因为其所用的计算方法是一种简便的近似计算,适用范围较小.其次,天文学方法计算量大,不适合日常软件使用.但如果要进行历史研究,范围就超出常用日历,本文即实 ...

  7. python公历转农历_有没有 python3 可用的农历转公历的包?

    lifulinghan 2018-08-09 10:09:32 +08:00 有啊,你可以试一下 sxtwl,pip install sxtwl import sxtwl #日历中文索引 ymc = ...

  8. python公历转农历

    # 引入日历库模块 import sxtwl # 引入mysql库模块 import pymysqlymc = ["十一", "腊", "正" ...

  9. iOS中阳历转阴历 代码

    最近做的项目中包含了阳历和阴历共存的需求,总结一下 首先将月份,日,节日单独放到数组中 #define ChineseMonths @[@"正月", @"二月" ...

最新文章

  1. 最高70万!深圳大学高薪招150名教师引关注
  2. g++ 生成C++ .so库文件,并调用示例
  3. 网站推广专员浅析网站排名越来越差大抵离不开这些网站推广重点
  4. 关于当前所用的MVP架构的所思所想
  5. 使用nodejs构建Docker image最佳实践
  6. 验证VSPHERE5 支持大于2TB磁盘
  7. vscode中控制台不能输入_vscode调试时如何在控制台输入
  8. 【第一部分】01Leetcode刷题
  9. PHPstrom的Disable Power Save Mode
  10. 只有极少数人能通过的「超级多任务」测试(文末附测试地址)
  11. php中is upload,PHP中,文件上传
  12. 单片机矩阵键盘扫描程序c语言,51单片机矩阵键盘扫描程序(源代码)
  13. sql server插入语句
  14. IOS逆向分析—终极详细(一)
  15. 台式计算机技术参数响应表,详细技术参数响应表介绍.doc
  16. Jetson Agx Orin使用最正确的方式安装torch1.11.0,torchvision0.12.0,torchaudio0.11.0保姆级教程
  17. 预测问题-机器学习思考
  18. [分享]豪杰超级DVD播放器Ⅲ破解之菜鸟了解PE文件
  19. php商城系统有什么优势?php商城系统具备的优势点介绍
  20. android 自定义popupwindow,自定义通过PopupWindow实现通用菜单

热门文章

  1. 宝宝穿了袜子会变笨?穿与不穿3年后差异大
  2. 基于51单片机的数码管智能百叶窗
  3. 水晶报表二维码如何打印
  4. 在线屏幕测试检查工具
  5. U-Boot 顶层 Makefile 详解
  6. 锁,知其然知其所以然
  7. windows audio错误0x80070005怎么解决
  8. 代理服务器和路由器什么区别?
  9. 会议 期刊论文 高清晰图片设置
  10. 匹配表情emoji 正则_详解Android过滤emoji表情正则表达式