公历转农历

公历转农历为方便叙述,首先介绍两个函数高斯函数:f(x)=[x],[x]表示不超过数x的最大整数,那么对数x进行取整有三种方法:用高斯函数分别表示为去尾法取整f(x)=[x];进一法取整f(x)=-[-x];四舍五入法取整f(x)=[x+0.5].求余数函数:f(x)=xmodt,表示x除以t后所得的余数(即mod表示余数运算)且被除数x=除数t*商+余数,所以有x=t*[x/t]+xmodt如果以某年的1月1日为这一年第1天,那么这一年2月1日就是第32天……如果设月份数为m,日期数为d,求m月d日是这一年的第几天(即这一天的序数),这也容易算出,但能否给出个公式,把m,d代入公式直接求出序数g(m,d)呢?下面来推导这个公式:要求出序数g(m,d)只需把日期d加上这个月之前各月天数的总和g(m)即可,比如说求1月份某日序数,把日期加0即可,求2月份某日序数,把日期加31即可……容易得出平年和闰年的1-12月份的月前天数总和g(m)分别是:月份``m`,1,`2,`3,`4,``5,``6,``7,``8,``9,`10,`11,`12。

平年g(m),0,31,59,90,120,151,181,212,243,273,304,334。

闰年g(m),0,31,60,91,121,152,182,213,244,274,305,335。

下面来求这个月前天数总和g(m)的表达式,假设(1)如果一年中的每个月都是30天,很容易得出月前天数总和g(m)为30m-30,假设(2)如果一年中的单月都是31天,双月都是30天,月前天数总和比假设(1)每个双月多一天,在假设(1)基础加[m/2],(即对m/2取整)即可以得出这种情况下g(m)为30m+[m/2]-30,假设(3)如果一年中8月以前的单月都是31天,双月都是30天,并且8月及其以后的单月都是30天,双月都是31天,月前天数总和比假设(2)中9月份及其以后每个月多一天,在假设(2)基础加[m/9],即可以得出这种情况下g(m)为30m+[m/2]+[m/9]-30,假设(3)跟实际情况已经很接近了,只差2月份的天数不同,先考虑平年时的情况,2月份是28天,比假设(3)中少两天,所以当m=1,2时g(m)为30m+[m/2]+[m/9]-30,当m≥3时,g(m)为30m+[m/2]+[m/9]-30-2=30m+[m/2]+[m/9]-32,可以用式子[2/m]和[1/m]把m=1,2时的情况化到上式当中,即得平g(m)=30m+[m/2]+[m/9]-32+([2/m]-[1/m])*2,由此还可得闰年时闰g(m)=30m+[m/2]+[m/9]-31+([2/m]-[1/m]),设年份数为y,所以这个g(m)的统一式还和y有关。

前面已定义f(x)=xmodt表示x除以t后所得的余数,则闰年的条件可以这样来表述:已知当ymod4=0且ymod100≠0或ymod400=0时,y年才为闰年,由开篇介绍可知对(ymodt)/t用进一法取整表达式为-[-(ymodt)/t],其含义为当ymodt=0时,-[-(ymodt)/t]=0;当ymodt≠0时,-[-(ymodt)/t]=1,再由开篇x=t*[x/t]+xmodt可得-[-(ymodt)/t]=-[[y/t]-y/t],令m(y)=-[[y/4]-y/4]+[[y/100]-y/100]-[[y/400]-y/400],那么可以得出当y年是闰年时,m(y)=0,当y年不是闰年时,m(y)=1,以上几式都可以用讨论的方法加以证明,证明从略。

将m(y)应用到上面的g(m)式中,可以得到g(m)的统一式:g(m)=30m+[m/2]+[m/9]-31-m(y)+([2/m]-[1/m])*(1+m(y)),所以g(m,d)=g(m)+d=30m+[m/2]+[m/9]-31-m(y)+([2/m]-[1/m])*(1+m(y))+d。

假设从公元前一年到现在的历法都是现行历法(格里高利历法),即公历置闰方法未变,都是4年一闰且100年不闰400年又闰,实际没有公元0年,现在假设有公元0年,并把公元0年1月1日设为第1天(序数为1),那么公元1年1月1日就是第367天(序数为367)……但能否给出个公式g(y,m,d),把y,m,d代入公式直接求y年m月d日这一天的序数呢?下面来推导这个公式:要求出序数g(y,m,d)只需把g(m,d)加上这一年之前的天数总和g(y),假设(1)如果每年都是365天,很容易得出某一年之前的天数总和g(y)为365y,假设(2)如果每4年一闰,即每4k+1的年份的序数都比假设(1)多一天,由此可以得出g(y)为365y+[(y-1)/4]+1=365y+[y/4]-[[y/4]-y/4][(y-1)/4]+1=[y/4]-[[y/4]-y/4]可以用讨论的方法加以证明由此可以得到g(y)的表达式为g(y)=365y+[y/4]-[[y/4]-y/4]-[y/100]+[[y/100]-y/100]+[y/400]-[[y/400]-y/400],上面有m(y)=-[[y/4]-y/4]+[[y/100]-y/100]-[[y/400]-y/400],所以g(y)=365y+[y/4]-[y/100]+[y/400]+m(y),g(y,m,d)=365y+[y/4]-[y/100]+[y/400]+m(y)+g(m)+d,g(y,m,d)=365y+[y/4]-[y/100]+[y/400]+30m+[m/2]+[m/9]-31+([2/m]-[1/m])*(1+m(y))+d。

根据这个式子很容易求出任意两天之间相差的天数是多少,即分别求出两天的序数之后作差即可。

为方便计算,下面来化简这个式子设公元y年m月d日(y≥1582且y+m/10≥1583且y+m+d/15≥1593,1≤m≤12)设公元y年年份的末两位数为b(b=y-[y/100]),年份去掉末两位数后剩下的数为a(a=[y/100]),即有y=100a+b。

设f(y)=365y+[y/4]-[y/100]+[y/400],将y=100a+b代入式中得f(y)=36500a+365b+[25a+b/4]-[a+b/100]+[a/4+b/400]b为年份的末两位数,所以0≤b<100,所以[b/100]=0,b/400<1/4,用讨论的方法(设a=4k+0,1,2,3)可以证明[a/4+b/400]=[a/4],所以f(y)=36500a+365b+25a+[b/4]-a+[a/4],f(y)=36524a+[a/4]+365b+[b/4],所以g(y,m,d)=36524a+[a/4]+365b+[b/4]+30m+[m/2]+[m/9]-31+([2/m]-[1/m])*(1+m(y))+d。

设f(m)=30m+[m/2]+[m/9]+([2/m]-[1/m])*(1+m(y))+ε,(ε为一待定常数项)设f(y,m,d)=f(y)+f(m)+d,则f(y,m,d)=36524a+[a/4]+365b+[b/4]+30m+[m/2]+[m/9]+([2/m]-[1/m])*(1+m(y))+ε+d,则f(y,m,d)就是公元y年m月d日一个相对的序数,如果以某个历法周期p为模(除数),对进行求余数运算就可以求出某一天的是这个周期的哪一天了,(1)如果以7为模,就可以求某一天星期几,f(y,m,d)≡36524a+[a/4]+365b+[b/4]+f(m)+d(mod7),≡5a+[a/4]+b+[b/4]+2m+[m/2]+[m/9]+([2/m]-[1/m])*(1+m(y))+ε+d(mod7),然后对照历书就可以得出ε的值,在这里f(m)是以公式的形式给出的,如果能直接记住每个月f(m)(mod7)的值,会使计算更加快捷的,总之记的数据越多,算起来越快。

(2)如果以60为模,就可以求公历某年某月某日的干支序数,f(y,m,d)≡36524a+[a/4]+365b+[b/4]+f(m)+d(mod60),f(y,m,d)≡44a+[a/4]+5b+[b/4]+f(m)+d(mod60),f(y,m,d)≡4*((11*(amod15))mod15)+[a/4]+5*bmod12+[b/4]+f(m)+d(mod60),1-12月对应的f(m)的余数分别对应10,41,9,40,10,41,11,42,13,43,14,44;闰年的1,2月份要减去1,最后求出的结果1-59分别对应干支甲子-壬戌,0对应癸亥,即求出的结果用10除求余数,余数为0-9时分别对应天干:癸甲乙丙丁戊己庚辛壬,求出的结果用12除求余数,余数为0-11时分别对应地支:亥子丑寅卯辰巳午未申酉戌亥,当a=19时,44a+[a/4]≡0(mod60);当a=20时,44a+[a/4]≡45(mod60);记住世纪的余数0和45就能很快算出上下100年某天的干支了,如1949年10月1日干支序数为0+5*49mod12+[49/4]+43+1≡5+12+43+1≡61≡1(mod60),所以新中国成立的这一天是甲子日!再如2006年10月1日干支序数为45+5*6+[6/4]+43+1≡15+1+43+1≡0(mod60),所以这一天是癸亥日,也可以不用60作模,而分别用10和12作模对f(y,m,d)求余数,需要计算两次才能求出干支,不知道这两种算法哪一种快,我还没有比较过。

(3)如果以28为模,就可以求某日对应的廿八宿,当然廿八宿也可以根据星期和干支用中国剩余定理算出来。

(4)如果以29.5306为模,则可以比较精确的估计出公历某年某月某日的农历日期,f(y,m,d)≡36524a+[a/4]+365b+[b/4]+f(m)+d(mod29.5306),≡[a/4]-5.3522a+10.6328b+[b/4]+0.4694m+[m/2]+[m/9]+([2/m]-[1/m])*(1+m(y))+ε+d(mod29.5306)据说目前还没有把公历转换成农历的公式,我想上面这个公式应该算是把公历转换成农历的公式了,如果把ε取一恰当的值,再把所得的结果四舍五入,也许会得到农历日期的精确值,这需要计算来验证,粗略算了一下,2000年的ε值在6.0134和6.0746之间,如果得不到农历日期的精确值,我猜想ε对于每年都是不同的值,并且ε是年份y的函数,如果也不成立的话,就需要换成更精确的周期29.53058867+0.0000000019(y-1900)来支持了,计算起来更为麻烦,不过用计算机算起来也许很快,只是我不会编程,暂时没法验证。

另外,对于儒略历y年m月d日,有8≤y≤1582且y+m/10≤1583且y+m+d/4≤1593,此时f(m)=30m+[m/2]+[m/9]+ε+([2/m]-[1/m])*(1-[[y/4]-y/4]),(ε为一待定常数项)f(y)=36525a+365b+[b/4],设f(y,m,d)=f(y)+f(m)+d,则f(y,m,d)=36525a+365b+[b/4]+30m+[m/2]+[m/9]+([2/m]-[1/m])*(1-[[y/4]-y/4])+ε+d,则f(y,m,d)就是公元y年m月d日一个相对的序数,应用这个式子可以计算儒略历时的星期和干支等数据,不再赘述。

THE END
1.农历阳历转换阴历转公历查询阴历阳历换算农历知识问答:公历是农历还是阳历?解答:公历是阳历。农历是阳历还是阴历?解答:农历是阴历。 您也可以在『万年历』中查询。如何在万年历进行阴历查阳历:一般阴历日期大概落后阳历日期一个月,比如要查2010年农历四月二十的阳历,翻动万年历,可能在2010年5月或6月的界面找到。 https://m.buyiju.com/cha/yyl.php
2.农历公历转换农历转公历农历查公历我国以农业立国,夏历的节气时令等与农业密切相关,故亦称为农历。换言之,阳历即是公历,阴历即是农历。 为方便广大网友,三藏起名网重新发布了这款【农历公历转换器】,这个阴阳历转换器支持1937年 至 2030年之间的农历公历转换,农历公历换算,公历农历换算,农历公历查询。! https://m.sanzang5.com/yinyangli.php
3.2024万年历农历公历转换,阴历阳历转换在线公历农历换算服务,包含万年历,公历转农历,农历转公历,查询农历今天是几月几日,阴历阳历对照表,阴历生日,农历节日、节气等。http://cn.nongli.info/
4.阴阳历转换阴历阳历转换器公历农历转换阴阳历转换器2024年最新阴阳历转换,在线阴历阳历转换器,轻松实现公历农历相互转换,实时阴历阳历日历显示,免费方便实用在线阴阳历转换器。http://www.nongli.fun/
5.农历公历转换阴历转阳历 请输入农历(阴历)日期: 年月日 农历是中国传统历法,现在生活中一般俗称阴历(太阴历-按月亮月相周期变化计算的历法)。阳历为太阳历,以地球公转周期计算的历法,公历就是一种太阳历。公历是现今世界通行的历法,即公历纪元、亦称西历,西元、公元等。https://t.aies.cn/shijian/nongli/
6.农历阳历转换阴阳历转换阴历阳历对照表阳历(公历) 年 月 日 阳历转阴历 阴历(农历) 年 月 阴历转阳历热门工具 更多> 星座 购房税款计算器 预计买车计算器 提前还贷计算器 分期付款计算器 新华字典 涂料计算器 准备金率调整影响计算器 汽车分期付款计算器 黄金T+D盈亏计算器 http://yinyangli.ip1138.com/
7.农历阳历转换阴历转公历查询阴历阳历换算阴历阳历互转 公历农历转换器 一般意义上讲,阴历即是农历,阳历即是公历。 农历:195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021年http://www.fotao9.com/
8.万年历农历查询农历阳历转换阴历转阳历阴阳历转换汉程网万年历农历查询,200年阴阳历转换,将农历阴历和公历阳历相互转换,可以查询农历节气、干支、闰月、纳音、星期,还附有每日宜忌、冲煞等黄历信息。https://life.httpcn.com/nongli.asp
9.万年历阴阳历转换万年历公历农历转换历农历换算口诀 公历农历转换公历,它是国际通用的。阳历以地球绕太阳转一圈的时间定做一年,共3 65天5小时48分46秒。平年只计365天这个 整数,不计尾数;一年分做12个月,大月31 天,小月30天,二月只有28天。四年的尾 数积累起来共1天光景,加在第四年的二月 里,这一年叫做闰年。所以闰年的二月有2 9天。阴历https://www.16757.com/ysh/huangli/2745.html
10.公历农历转换在线阴历阳历转换器公历农历转换,在线阴历阳历转换器,是一款公历转农历,农历转公历,阳历转阴历,阴历转阴历的公农历日期转换工具。http://yixueqiming.cn/ngz/index.html
11.农历转换公历每年的阳历1,就别管阴历,只是叫法不同,阳历,以前还曾用儒列历,农历换公历。 过生日要按农历的日子https://iask.sina.com.cn/jxwd/1kpJV3obp0S5.html
12.公历农历转换公历转农历农历阳历转换公历农历转换 老黄历网 择吉老黄历 二十四节气 今日黄历 老黄历查询 老黄历网>公历农历转换 公历转农历 农历:壬寅年(2022)腊月初十 农历转公历 是否为润月 公历:2023年1月22日https://299551.com/gonglinongli/
13.农历公历转换农历转公历农历查公历我国以农业立国,夏历的节气时令等与农业密切相关,故亦称为农历。换言之,阳历即是公历,阴历即是农历。 为方便广大网友,三藏算命网(www.sheup.com)重新发布了这款【农历公历转换器】,这个阴阳历转换器支持1937年 至 2030年之间的农历公历转换,农历公历换算,公历农历换算,农历公历查询。!http://www.360doc.com/content/16/0501/07/32052143_555428395.shtml
14.农历公历转换,搜由网农历公历转换,抽签算命,搜由网https://www.souuw.com/smxt/nongli.asp
15.农历阳历转换,阴历转公历查询,阴历阳历换算,农历公历转换器农历: 年 月 日 公历: 年 月 日 周公热门栏目: 姓名测试姓名打分男孩名字大全女孩名字大全姓名配对起名大全宝宝起名成人改名公司起名店铺起名康熙字典百家姓 民俗看相生男生女预测表 号码吉凶 指纹测算择吉黄历眼皮跳测吉凶打喷嚏测吉凶农历阳历转换 面相图解手相图解痣相图解骨相图解体相图解 十二生肖属鼠属牛属虎https://www.zgjm.org/nongliyangli/
16.公历农历转换查询工具在线农历公历转换工具能方便的将日期在农历(阴历)和公历(阳历)将相互转换,能方便的为您查询农历或公历生日。 农历公历转换器,阴阳历转换查询 国际通用的历法是以一年太阳回归年为周期,谓之太阳历,故称为阳历,全球公用,故亦称为公历。是由西方国家传入我国的纪元方式,台湾人亦称为西历、西元。 https://fly63.com/tool/detial/54
17.Javascript实现农历转换公历(附完整源码)Javascript实现农历转换公历(附完整源码) Javascript实现农历转换公历 以下是一个基于JavaScript的农历转换公历的代码示例,包括了月份和日期的中文表示。 // 农历转换公历functionlunarToSolar(lunarYear,lunarMonth,lunarDay){varleapMonth=leapMonthForLunar(lunarYearhttps://download.csdn.net/blog/column/12477219/134287710
18.php怎么将农历转换成公历?Worktile社区这段代码实现了将农历日期转换为公历日期的功能。你只需要将需要转换的农历日期的年、月、日作为参数传入函数`lunarToSolar()`,就可以得到对应的公历日期。需要注意的是,这里只示范了部分农历日期的转换规则,你需要根据实际情况进行相应的计算。 下面是将农历转换成公历的步骤和方法: https://worktile.com/kb/ask/180274.html
19.公历农历转换阳历阴历转换JSON 格式化 在线运行 常用 图片 网络 文本 编码 转换 生成 前端 技术文档 生活 JSON在线解析 JSON压缩转义 JSON编辑器 JSON排序 JSONPath JSON5 JSON视图 JSON脑图 JSON Hero JWT加解密 Lottie动画预览 JSON转SQL SQL转JSON SQL转Java JSON转Java实体 JSON转C#实体 JSON转CSV、Excel Excel转JSON XML ? JSON http://json.cn/calendar/
20.农历阳历转换阴阳历转换阴历阳历对照表它的缺点是历年长度相差过大,制历复杂,不于记忆。我国的农历就是一种典型的阴阳历。 我国的历法在几千年的过程中,不断改进、充实、完善,逐渐演变为现在所用的农历。农历实质上就是一种阴阳历,以月亮运动周期为主,同时兼顾地球绕太阳运动的周期。 阳历(公历) 年 月 日 阴历(农历) 年 月https://www.chazidian.com/yyl/
21.公历和农历转换转换器管理华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:公历和农历转换 。https://support.huaweicloud.com/topic/215918-5-G
22.公历农历转换公历(阳历)农历(阴历)转换,支持时间段从1900-2100 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby等 支持Mac,Windows,Android,WP多种平台 数据验证 1.用io.js(nodejs)写了一个httpserver,各种语言可以通过下面的http接口验证不同实现的数据一致性。 在javascript目录下nodecheckhttps://www.mianquan.net/project/Lunar-Solar-Calendar-Converter
23.快速转换公历到农历:WPS表格公式指南快速转换公历到农历: 在使用WPS表记录日期信息时,有时需要输入农历日期。 那如何快速将公历日期转换为农历日期呢? ?以此表格为例,将光标放在B2处。 在上方公式栏处输入此公式(可在下载课件处下载公式文档)。 =MID(甲乙丙丁戊己庚辛壬癸,MOD(TEXT(A2,[$-130000]e)-4,10)+1,1)&MID(子丑寅卯辰巳午未https://www.kdocs.cn/article/602BD04565.html
24.公历与农历转换代码拓源技术请注意,此示例使用了第三方库lunarcalendar来进行公历和农历的转换。在运行代码之前,你需要使用pip安装该库: Copycodepip install lunarcalendar 此代码示例可以将指定的公历日期转换为农历日期,并将指定的农历日期转换为公历日期。你可以根据需要修改和扩展代码以适应具体的用途。https://www.cnblogs.com/tuoyuanjishu/articles/17457842.html
25.PHP农历公历转换php教程PHP农历公历转换 /* 云南省曲靖师范学院计算机科学与工程学院-杨海熙编写 2009-9-3 */ class Lunar { private $_SMDay = array(1 => 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//定义公历月分天数 private $_LStart = 1950 ;//农历从1950年开始 https://www.php.cn/faq/318919.html
26.公历与农历的转换器理想股票技术论坛公历与农历的转换器是一种方便使用者将公历日期转换为农历日期或将农历日期转换为公历日期的工具。这种转换器可以帮助用户快速准确地在公历和农历之间进行日期转换,以满足不同文化和传统的需求。无论是需要查询农历节日还是了解特定日期的公历对应,这个转换器都能提供准确https://www.55188.com/tag-7110122.html
27.公历农历转换gonglinongli.51240.com公历农历转换器http://www.fwol.cn/gotoweb.php?id=5106629
28.阴历转阳历农历转阳历阴阳历转换阴历阳历转换公历转农历阴历阳历转换 阴历(农历)转阳历: 阳历转阴历(农历): 月 提示:系统会自动识别“闰月”;目前支持1936年-2031年间的数据查询。 说明:在八字算命、称骨算命、紫薇算命,还有阴阳历生日查询等的辅助工具。此程序是为了方便大家只知道阴历(农历)或者只知道阳历(公历)时互换。https://www.k366.com/gj/2294.htm
29.农历阳历转换,阴历转阳历,阳历转阴历,公历转农历,农历转公历农历阳历转换,农历是中国长期采用的一种传统历法,它以朔望的周期来定月,用置闰的办法使年平均长度接近太阳回归年,因这种历法安排了二十四节气以指导农业生产活动,故称农历,又叫中历、夏历,俗称阴历。本应用可将您选择的阳历日期转换为农历日期,也可以将您输入的农历日http://www.8882088.com/nongli/