| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1567 人关注过本帖
标题:我做了一个公农历转换程序,请大家多指教
只看楼主 加入收藏
shenqk
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-1-5
收藏
得分:0 

受教了,谢谢!

2006-05-31 15:28
shenqk
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-1-5
收藏
得分:0 

这个“公农历转换程序”中,农历常量(数据位)是如何确定的?

为什么2006年的农历常量是 &H10ABB7 ?

2006-06-02 07:48
shenqk
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-1-5
收藏
得分:0 
'传入   日天干地支
Public Function GanRi(nYear As Long, Numn As Long, nDay As Long) As String
    Dim TempStr As String
    'G = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3
    'Z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i
    '例如:查2006年4月1日的干支日。 将数值代入计算公式。
    'G =4*20 + [20 / 4] + 5*06 + [06 / 4] + [3 * (4 + 1) / 5] + 1 - 3 =197
    'Z =8*20 + [20 / 4] + 5*06 + [06 / 4] + [3 * (4 + 1) / 5] + 1 + 7 + 6 =213
    '其中 C 是世纪数减一,y 是年份后两位,M 是月份,d 是日数。1月和2月按上一年的13月和14月来算。奇数月i=0,偶数月i=6。G 除以10的余数是天干,Z 除以12的余数是地支。
    ' 计算时带[ ]的数表示取整
    Dim G As Long
    Dim Z As Long
    Dim i As Long
    Dim C As Long
    Dim Y As Long
   
    C = Left(nYear, 2)
    Y = Right(nYear, 2)
    If Numn Mod 2 = 0 Then i = 6 Else i = 0
    G = 4 * C + Fix(C / 4) + 5 * Y + Fix(Y / 4) _
        + Fix(3 * (Numn + 1) / 5) + nDay - 4 '干支
   
    Z = 8 * C + Fix(C / 4) + 5 * Y + Fix(Y / 4) _
        + Fix(3 * (Numn + 1) / 5) + nDay + 6 + i '地支
    G = G Mod 10
    Z = Z Mod 12
    ZDay = G
    TempStr = Gan(Abs(G)) & Zhi(Abs(Z))
    GanRi = TempStr
End Function

"1月和2月按上一年的13月和14月来算" 这个程序没有列出。
还有,当Y = 0时,如2000年1月18日,这个程序如何写?
2012-08-14 12:21
shenqk
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-1-5
收藏
得分:0 
2012年的“大雪”应该是12月7日,而该公农历转换程序显示的是12月6日。
如何更正?
2012-12-08 19:56
木示
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-10-11
收藏
得分:0 
转换成八字有的不正确
2021-12-04 17:39
快速回复:我做了一个公农历转换程序,请大家多指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040254 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved