以文本方式查看主题

-  中华农历论坛  (http://bbs.nongli.net/index.asp)
--  历法知识  (http://bbs.nongli.net/list.asp?boardid=2)
----  [求助]我的要求很简单,这个农历转公历,公历转农历的VBA代码是正确的吗?  (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=68874)

--  作者:nut2004
--  发布时间:2015/5/22 18:09:00
--  [求助]我的要求很简单,这个农历转公历,公历转农历的VBA代码是正确的吗?
我的要求很简单
只要把指定公历日期转换成农历,但看了坛子的代码太累赘,功能太多,整得太复杂。

如下
公历农历互转

图片点击可在新窗口打开查看此主题相关图片如下:农历公历互转.png
图片点击可在新窗口打开查看


实现1900年-2150年内的查询即可


--  作者:nut2004
--  发布时间:2015/5/22 18:17:00
--  这是我找到的代码
我已经在坛子里研究了两天,但还看不出来一个所以然,下面的代码请前辈帮帮我看看——重点是这样算法对吗?


下面的\'农历常量:ylData,这个是什么意思,代表什么,这些数据是正确的吗?

链接:http://www.excelpx.com/home/show.aspx?id=34965


坛子里根本没法直接贴代码,贴上后格式全乱了,请前辈直接看链接的代码吧
--  作者:nut2004
--  发布时间:2015/5/22 18:41:00
--  
代码地址:http://www.excelpx.com/home/show.aspx?id=34965
[此贴子已经被作者于2015-5-23 9:09:28编辑过]


--  作者:hiteyun
--  发布时间:2015/5/23 9:30:00
--  
以下是引用nut2004在2015-5-22 18:17:00的发言:
我已经在坛子里研究了两天,但还看不出来一个所以然,下面的代码请前辈帮帮我看看——重点是这样算法对吗?


下面的\'农历常量:ylData,这个是什么意思,代表什么,这些数据是正确的吗?

链接:http://www.excelpx.com/home/show.aspx?id=34965


坛子里根本没法直接贴代码,贴上后格式全乱了,请前辈直接看链接的代码吧

这是一个查表法的日期转换程序,程序里将特定年份(1899-2100年)的农历每年各月大小、闰月等信息编成压缩数据存储在数组常量中。如第1个十六进制数为“AB500D2”,AB5即十二位二进制数101010110101表示1899年农历各月大小,00表示这一年没有闰月,D2换成十进制数为210表示当年正月初一的公历日期为2月10号。
--  作者:hiteyun
--  发布时间:2015/5/23 9:40:00
--  
第2个数“4BD0883”是1900年的信息,其中“08”表示当年闰八月小,“83”换成十进制数是131表示正月初一的公历日期为1月31号。
--  作者:nut2004
--  发布时间:2015/5/25 13:22:00
--  
谢谢,我全部转成2进制看看
--  作者:春光
--  发布时间:2015/6/4 21:47:00
--  
如果节气精确到分钟的话,查表法不好处理节气。
--  作者:宇谦
--  发布时间:2015/9/6 16:43:00
--  
如果节气不要求显示交节时刻,查表法倒是一种很简单的处理。
--  作者:浪-淘-沙
--  发布时间:2015/9/7 17:05:00
--  

其实查表法,即使提供了“节气时刻”,也只是增加了一些数据量而已。编程代码的难度不会有特别的增加。


--  作者:paradise300
--  发布时间:2015/9/15 14:25:00
--  
 如果年份跨度不大,查表法精确到秒不是问题,只不过带小数的数据不好压缩,数据的体积会很大。目前封的C++库是200多Kb,改天有空了,封个农历转换的Excel插件再放到论坛来共享