纠正公农历转换的VB代码 http://www.pc-soft.cn/blogview.asp?logID=4&page=1

VBAdvisor 2007-07-05 07:20:18
顺便问:请问是否有阳历农历的直接转换公式?网上实现的都靠公历农历对照表。
http://www.pc-soft.cn/blogview.asp?logID=4&page=1有一个,也是用阳历农历对照表。顺便纠正几个编码错误。

1955-5-21 mistake is due to wrong initial value 457037C,change to 457137C
1989-8-1 mistake is due to wrong initial value 93700CE,change to 95700CE
2013-6-8 mistake is due to wrong initial value B5500D2,change to AD500D2

by VBAdvisor on 5/July/2007

Private Const ylData = "AB500D2,4BD0883," _
& "4AE00DB,A5700D0,54D0581,D2600D8,D9500CC,655147D,56A00D5,9AD00CA,55D027A,4AE00D2," _
& "A5B0682,A4D00DA,D2500CE,D25157E,B5500D6,56A00CC,ADA027B,95B00D3,49717C9,49B00DC," _
& "A4B00D0,B4B0580,6A500D8,6D400CD,AB5147C,2B600D5,95700CA,52F027B,49700D2,6560682," _
& "D4A00D9,EA500CE,6A9157E,5AD00D6,2B600CC,86E137C,92E00D3,C8D1783,C9500DB,D4A00D0," _
& "D8A167F,B5500D7,56A00CD,A5B147D,25D00D5,92D00CA,D2B027A,A9500D2,B550781,6CA00D9," _
& "B5500CE,535157F,4DA00D6,A5B00CB,457137C,52B00D4,A9A0883,E9500DA,6AA00D0,AEA0680," _
& "AB500D7,4B600CD,AAE047D,A5700D5,52600CA,F260379,D9500D1,5B50782,56A00D9,96D00CE," _
& "4DD057F,4AD00D7,A4D00CB,D4D047B,D2500D3,D550883,B5400DA,B6A00CF,95A1680,95B00D8," _
& "49B00CD,A97047D,A4B00D5,B270ACA,6A500DC,6D400D1,AF40681,AB600D9,95700CE,4AF057F," _
& "49700D7,64B00CC,74A037B,EA500D2,6B50883,5AC00DB,AB600CF,96D0580,92E00D8,C9600CD," _
& "D95047C,D4A00D4,DA500C9,755027A,56A00D1,ABB0781,25D00DA,92D00CF,CAB057E,A9500D6," _
& "B4A00CB,BAA047B,AD500D2,55D0983,4BA00DB,A5B00D0,5171680,52B00D8,A9300CD,795047D," _
& "6AA00D4,AD500C9,5B5027A,4B600D2,96E0681,A4E00D9,D2600CE,EA6057E,D5300D5,5AA00CB," _
& "76A037B,96D00D3,4AB0B83,4AD00DB,A4D00D0,D0B1680,D2500D7,D5200CC,DD4057C,B5A00D4," _
& "56D00C9,55B027A,49B00D2,A570782,A4B00D9,AA500CE,B25157E,6D200D6,ADA00CA,4B6137B," _
& "93700D3,49F08C9,49700DB,64B00D0,68A1680,EA500D7,6AA00CC,A6C147C,AAE00D4,92E00CA," _
& "D2E0379,C9600D1,D550781,D4A00D9,DA400CD,5D5057E,56A00D6,A6C00CB,55D047B,52D00D3," _
& "A9B0883,A9500DB,B4A00CF,B6A067F,AD500D7,55A00CD,ABA047C,A5A00D4,52B00CA,B27037A," _
& "69300D1,7330781,6AA00D9,AD500CE,4B5157E,4B600D6,A5700CB,54E047C,D1600D2,E960882," _
& "D5200DA,DAA00CF,6AA167F,56D00D7,4AE00CD,A9D047D,A2D00D4,D1500C9,F250279,D5200D1"
...全文
906 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlifeng2008 2010-09-21
  • 打赏
  • 举报
回复
楼主及阿勇,上面大家修改的农历常量,我不知道是否有错,比方说2033年9月23日是农历八月初一,我按楼主的常量输入保存了,可公式的结果还是显示不对,请问是什么原因呢?好急呀,如果方便,我加你QQ等联系方式?或者我的QQ是554048849,也欢迎你加我,呵呵……
VBAdvisor 2008-05-05
  • 打赏
  • 举报
回复
总地来说,用Table查表的方式不是很准确,尤其是判断节气。大家看看我的blog:
http://hi.baidu.com/vbadvisor/blog
VBAdvisor 2008-04-29
  • 打赏
  • 举报
回复
ooop,should be:


Public Property Get lSolarTerm() As String
'...
NewDate = CDate(Round(DateAdd("n", num, baseDateAndTime)),1 )
'..
End Property

The code is based on fixed time difference, accuracy will not be as
good as that from astronomical model as the codes are using average values.
VBAdvisor 2008-04-27
  • 打赏
  • 举报
回复
Follow up on 27/April/2008:

2008年1月21日即农历十二月21日是大寒。但VB计算是2008年1月20日即农历十
二月20日是大寒.
修改原码:

Public Property Get lSolarTerm() As String
'...
NewDate = Round(DateAdd("n", num, newaseDateAndTime))
'..
End Property
k999999k 2008-01-30
  • 打赏
  • 举报
回复
以前也下载过这类代码用过,但都有些地方计算不准或程序出错!
最后自己去看公农历资料,自己编写了公农历互转的asp文件用!
可以查询1950~2050年的公历农历!公历转换成农历,也可农历转换成公历!
http://www.oneti.cn/hlx/share.asp?mudi=download&ID=1
li_net 2007-07-09
  • 打赏
  • 举报
回复
mark
VBAdvisor 2007-07-07
  • 打赏
  • 举报
回复
Please note the reference is source from 香港天文台http://www.weather.gov.hk/gts/time/conversionc.htm
VBAdvisor 2007-07-07
  • 打赏
  • 举报
回复
'Overall Correction by VBAdvisor on 7/July/2007
'I will keep update once I catch any more mistakes.
'1955-5-21 mistake is due to wrong initial value 457037C,change to 457137C
'1989-8-1 mistake is due to wrong initial value 93700CE,change to 95700CE
'2013-6-8 mistake is due to wrong initial value B5500D2,change to AD500D2
'1916-3-1 mistake is due to wrong initial value 56A00CC,change to D6A00CB
'1920-12-1 mistake is due to wrong initial value 49B00DC,change to 49700DC
'2025-5-1 mistake is due to wrong initial value 96E0681,change to A6E0681
'2033-9-1 mistake is due to wrong initial value 4AB0B83,change to 4AF0B83
'Lunar date 1915 has an invalid initial value B5500D6,change to B5400D6
'Lunar date 2065 has an invalid initial value DA400CD,change to DA500CD
'Lunar date 2068 has an invalid initial value A6C00CB,change to A6D00CB 2069-1-22
'Lunar date 2079-1-21 has an invalid initial value 52B00CA,change to 62B00CA
'Lunar date 2078 has an invalid initial value A5A00D4,change to A5B00D4

'农历常量(1899~2100,共202年)
Private Const LunarTable = "AB500D2,4BD0883," _
& "4AE00DB,A5700D0,54D0581,D2600D8,D9500CC,655147D,56A00D5,9AD00CA,55D027A,4AE00D2," _
& "A5B0682,A4D00DA,D2500CE,D25157E,B5400D6,D6A00CB,ADA027B,95B00D3,49717C9,49700DC," _
& "A4B00D0,B4B0580,6A500D8,6D400CD,AB5147C,2B600D5,95700CA,52F027B,49700D2,6560682," _
& "D4A00D9,EA500CE,6A9157E,5AD00D6,2B600CC,86E137C,92E00D3,C8D1783,C9500DB,D4A00D0," _
& "D8A167F,B5500D7,56A00CD,A5B147D,25D00D5,92D00CA,D2B027A,A9500D2,B550781,6CA00D9," _
& "B5500CE,535157F,4DA00D6,A5B00CB,457137C,52B00D4,A9A0883,E9500DA,6AA00D0,AEA0680," _
& "AB500D7,4B600CD,AAE047D,A5700D5,52600CA,F260379,D9500D1,5B50782,56A00D9,96D00CE," _
& "4DD057F,4AD00D7,A4D00CB,D4D047B,D2500D3,D550883,B5400DA,B6A00CF,95A1680,95B00D8," _
& "49B00CD,A97047D,A4B00D5,B270ACA,6A500DC,6D400D1,AF40681,AB600D9,95700CE,4AF057F," _
& "49700D7,64B00CC,74A037B,EA500D2,6B50883,5AC00DB,AB600CF,96D0580,92E00D8,C9600CD," _
& "D95047C,D4A00D4,DA500C9,755027A,56A00D1,ABB0781,25D00DA,92D00CF,CAB057E,A9500D6," _
& "B4A00CB,BAA047B,AD500D2,55D0983,4BA00DB,A5B00D0,5171680,52B00D8,A9300CD,795047D," _
& "6AA00D4,AD500C9,5B5027A,4B600D2,A6E0681,A4E00D9,D2600CE,EA6057E,D5300D5,5AA00CB," _
& "76A037B,96D00D3,4AF0B83,4AD00DB,A4D00D0,D0B1680,D2500D7,D5200CC,DD4057C,B5A00D4," _
& "56D00C9,55B027A,49B00D2,A570782,A4B00D9,AA500CE,B25157E,6D200D6,ADA00CA,4B6137B," _
& "93700D3,49F08C9,49700DB,64B00D0,68A1680,EA500D7,6AA00CC,A6C147C,AAE00D4,92E00CA," _
& "D2E0379,C9600D1,D550781,D4A00D9,DA500CD,5D5057E,56A00D6,A6D00CB,55D047B,52D00D3," _
& "A9B0883,A9500DB,B4A00CF,B6A067F,AD500D7,55A00CD,ABA047C,A5B00D4,62B00CA,B27037A," _
& "69300D1,7330781,6AA00D9,AD500CE,4B5157E,4B600D6,A5700CB,54E047C,D1600D2,E960882," _
& "D5200DA,DAA00CF,6AA167F,56D00D7,4AE00CD,A9D047D,A2D00D4,D1500C9,F250279,D5200D1"

kmlxk0 2007-07-06
  • 打赏
  • 举报
回复
强势~!
fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
寒,都是我的错。:-(

核对数据时最好使用香港天文台的数据,网上有些软件上的数据本身就是不准确的。我就是用网上的一些软件的数据对照整理的,所以错误不少!!
VBAdvisor 2007-07-06
  • 打赏
  • 举报
回复
紧急通知:
发现http://www.pc-soft.cn/blogview.asp?logID=4&page=1有更多错误,多达30处。请给我时间去纠正。谢谢。
fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
阳历农历的直接转换公式 好象没有的,特别是置闰这一块,需要天文学家观查月亮、太阳以及地球的位置关系来确定。

曾经看到过一个网页宣称可以计算任意日期的农历数据,但是...但是...正确性没办法验证。毕竟现在各大天文馆都只将农历计算到了2100年,这是可以验证的。以后年份的是否正确,就不知道了。
fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
呵呵,楼主有心人!

这个网页是我的,上面的代码和数据是我很久前整理的,已经知道有几个错误。但是由于要核对200年中的日历资料,一直没的抽出时间去修正它。

现在楼主做了,感谢。:-)
VBAdvisor 2007-07-06
  • 打赏
  • 举报
回复
Please replace "LunarTable" with "ylData" to match original program.
Cheers!
fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
呵呵,楼主效率很高啊!辛苦了。

我这就将我网页上的数据去更新一下,谢谢。
VBAdvisor 2007-07-06
  • 打赏
  • 举报
回复
'Overall Result:
'1955-5-21 mistake is due to wrong initial value 457037C,change to 457137C
'1989-8-1 mistake is due to wrong initial value 93700CE,change to 95700CE
'2013-6-8 mistake is due to wrong initial value B5500D2,change to AD500D2
'1916-3-1 mistake is due to wrong initial value 56A00CC,change to D6A00CB
'1920-12-1 mistake is due to wrong initial value 49B00DC,change to 49700DC
'2025-5-1 mistake is due to wrong initial value 96E0681,change to A6E0681
'2033-9-1 mistake is due to wrong initial value 4AB0B83,change to 4AF0B83
'Correct by VBAdvisor on 6/July/2007

'农历常量(1899~2100,共202年)
Private Const LunarTable = "AB500D2,4BD0883," _
& "4AE00DB,A5700D0,54D0581,D2600D8,D9500CC,655147D,56A00D5,9AD00CA,55D027A,4AE00D2," _
& "A5B0682,A4D00DA,D2500CE,D25157E,B5500D6,D6A00CB,ADA027B,95B00D3,49717C9,49700DC," _
& "A4B00D0,B4B0580,6A500D8,6D400CD,AB5147C,2B600D5,95700CA,52F027B,49700D2,6560682," _
& "D4A00D9,EA500CE,6A9157E,5AD00D6,2B600CC,86E137C,92E00D3,C8D1783,C9500DB,D4A00D0," _
& "D8A167F,B5500D7,56A00CD,A5B147D,25D00D5,92D00CA,D2B027A,A9500D2,B550781,6CA00D9," _
& "B5500CE,535157F,4DA00D6,A5B00CB,457137C,52B00D4,A9A0883,E9500DA,6AA00D0,AEA0680," _
& "AB500D7,4B600CD,AAE047D,A5700D5,52600CA,F260379,D9500D1,5B50782,56A00D9,96D00CE," _
& "4DD057F,4AD00D7,A4D00CB,D4D047B,D2500D3,D550883,B5400DA,B6A00CF,95A1680,95B00D8," _
& "49B00CD,A97047D,A4B00D5,B270ACA,6A500DC,6D400D1,AF40681,AB600D9,95700CE,4AF057F," _
& "49700D7,64B00CC,74A037B,EA500D2,6B50883,5AC00DB,AB600CF,96D0580,92E00D8,C9600CD," _
& "D95047C,D4A00D4,DA500C9,755027A,56A00D1,ABB0781,25D00DA,92D00CF,CAB057E,A9500D6," _
& "B4A00CB,BAA047B,AD500D2,55D0983,4BA00DB,A5B00D0,5171680,52B00D8,A9300CD,795047D," _
& "6AA00D4,AD500C9,5B5027A,4B600D2,A6E0681,A4E00D9,D2600CE,EA6057E,D5300D5,5AA00CB," _
& "76A037B,96D00D3,4AF0B83,4AD00DB,A4D00D0,D0B1680,D2500D7,D5200CC,DD4057C,B5A00D4," _
& "56D00C9,55B027A,49B00D2,A570782,A4B00D9,AA500CE,B25157E,6D200D6,ADA00CA,4B6137B," _
& "93700D3,49F08C9,49700DB,64B00D0,68A1680,EA500D7,6AA00CC,A6C147C,AAE00D4,92E00CA," _
& "D2E0379,C9600D1,D550781,D4A00D9,DA400CD,5D5057E,56A00D6,A6C00CB,55D047B,52D00D3," _
& "A9B0883,A9500DB,B4A00CF,B6A067F,AD500D7,55A00CD,ABA047C,A5A00D4,52B00CA,B27037A," _
& "69300D1,7330781,6AA00D9,AD500CE,4B5157E,4B600D6,A5700CB,54E047C,D1600D2,E960882," _
& "D5200DA,DAA00CF,6AA167F,56D00D7,4AE00CD,A9D047D,A2D00D4,D1500C9,F250279,D5200D1"
VBAdvisor 2007-07-06
  • 打赏
  • 举报
回复
基本上差不多了。有个技巧,就是用另外一个程序与你的程序对比,并且列表出来。然后手工查。
fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
我原贴的评论中自己收集了一个比较权威的网页,香港天文台。这里应该是官方数据,不会出错的!但数据是PDF的,要核对200年的资料,很要花时间。

http://www.weather.gov.hk/gts/time/conversionc.htm
VBAdvisor 2007-07-06
  • 打赏
  • 举报
回复
纠正:
中国农历网比较准:
http://www.nongli.com/item3/index.asp#

也有问题,但不知谁真地正确。例如:
1916-3-1 结果是 1916年正月廿七,正确(?)是1916年正月廿八

fxy_2002 2007-07-06
  • 打赏
  • 举报
回复
楼主真有心。

当初我整理数据时就是使用一个网页版和一个免费小软件对照的,有时两软件就对不上。再加上我自己核对时可能也会出错,造成有不少错误。另外此代码原始代码中的数据我也没有核对过,直接照搬,相信也有错误在里面。

我想要完全正确,需要对全部的数据都核对一次才行。因为工作量不少,所以两年来我一直没完成它!
加载更多回复(5)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧