python公历转农历_python 阳历转阴历代码(2)
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)相关推荐
- python公历转农历_Python如何实现阳历转阴历的方法分享
这篇文章主要介绍了Python实现公历(阳历)转农历(阴历)的方法,涉及农历算法原理及Python日期运算相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现公历(阳历)转农历(阴历)的 ...
- uniApp实现公农日历相互转换、公历、农历、阳历、阴历、calendar
文章目录 前言 版本一 版本二 效果图 第一步,git下载组件 版本一 版本二 第二步,下载依赖包 第三步,使用 版本一 版本二 总结 版本一 版本二 微信小程序查看效果 关于js-calendar- ...
- PB中公历与农历(阳历与阴历)的互相转换——主要是农历转公历(阴历转阳历)
PB中关于公历转农历的算法,网上有很多,思路也大致一样,在这里我就不再进行说明了. 本文主要是想跟所有PB爱好者,分享农历转公历的方法. 转换思路为:根据传入的农历日期,找到第一个小于传入日期的基准日 ...
- python公历转农历_python有没有能实现公历转换农历的库
展开全部 有啊.pip里有一个sxtwl的库.很方便的 pip install sxtwl 就能安装了. 如果是Windows用户,可以使用作者提供的二进制安装包: 下面是转换的例子import ...
- 关于“1900年至2100年公历、农历互转的js代码”的详细分析
今天讲的是对1900年至2100年公历.农历互转的js代码进行详细分析! 首先来看一下js里面的方法都得到了哪些有用的数据--这里直接在html文档里面引入该js文件,然后调用对应的方法: <s ...
- Python公历转换农历及简易万年历
一般使用的万年历,只提供距今前后百年的日历.这是因为其所用的计算方法是一种简便的近似计算,适用范围较小.其次,天文学方法计算量大,不适合日常软件使用.但如果要进行历史研究,范围就超出常用日历,本文即实 ...
- python公历转农历_有没有 python3 可用的农历转公历的包?
lifulinghan 2018-08-09 10:09:32 +08:00 有啊,你可以试一下 sxtwl,pip install sxtwl import sxtwl #日历中文索引 ymc = ...
- python公历转农历
# 引入日历库模块 import sxtwl # 引入mysql库模块 import pymysqlymc = ["十一", "腊", "正" ...
- iOS中阳历转阴历 代码
最近做的项目中包含了阳历和阴历共存的需求,总结一下 首先将月份,日,节日单独放到数组中 #define ChineseMonths @[@"正月", @"二月" ...
最新文章
- 最高70万!深圳大学高薪招150名教师引关注
- g++ 生成C++ .so库文件,并调用示例
- 网站推广专员浅析网站排名越来越差大抵离不开这些网站推广重点
- 关于当前所用的MVP架构的所思所想
- 使用nodejs构建Docker image最佳实践
- 验证VSPHERE5 支持大于2TB磁盘
- vscode中控制台不能输入_vscode调试时如何在控制台输入
- 【第一部分】01Leetcode刷题
- PHPstrom的Disable Power Save Mode
- 只有极少数人能通过的「超级多任务」测试(文末附测试地址)
- php中is upload,PHP中,文件上传
- 单片机矩阵键盘扫描程序c语言,51单片机矩阵键盘扫描程序(源代码)
- sql server插入语句
- IOS逆向分析—终极详细(一)
- 台式计算机技术参数响应表,详细技术参数响应表介绍.doc
- Jetson Agx Orin使用最正确的方式安装torch1.11.0,torchvision0.12.0,torchaudio0.11.0保姆级教程
- 预测问题-机器学习思考
- [分享]豪杰超级DVD播放器Ⅲ破解之菜鸟了解PE文件
- php商城系统有什么优势?php商城系统具备的优势点介绍
- android 自定义popupwindow,自定义通过PopupWindow实现通用菜单