http://thunder.eeap.cwru.edu/ccal/ccal.htm http://thunder.eeap.cwru.edu/ccal/ccal-2.4.tar.gz 
ccal-24.zip (86 KB) 2008年1月21日即农历十二月21日是大寒。但我的VB计算是2008年1月20日即农历十 
二月20日是大寒,到底哪个计算是正确的?可能VB计算有误,能否纠正一下?谢 
谢。 Function GetiTermDay(ByVal CurUnYear As Integer, ByVal iTerm As Integer) 
As Integer   Dim offDate     As Double 
  Dim vTermInfo     As Variant 
  Dim SolarTerm As Variant   '一个节气年的毫秒长度 
  Const sTermYearLen     As Double = 31556925974.7 
'求节气日期的定气常数(各个节气到小寒的分钟数)(如果能有人提供到秒的常 
数就好了)   vTermInfo = Array(0, 21208, 42467, 63836, 85337, 107014, 128867, 
150921, _ 
  173149, 195551, 218072, 240693, 263343, 285989, 308563, 331033, _ 
  353350, 375494, 397447, 419210, 440795, 462224, 483532, 504758) 'SolarTerm = Array("小寒", "大寒", "立春", _ 
                   "雨水", "惊蛰", "春分", _ 
                   "清明", "谷雨", "立夏", _ 
                   "小满", "芒种", "夏至", _ 
                   "小暑", "大暑", "立秋", _ 
                   "处暑", "白露", "秋分", _ 
                   "寒露", "霜降", "立冬", _ 
                   "小雪", "大雪", "冬至") SolarTerm = Array(ChrW$(&H5C0F) & ChrW$(&H5BD2), ChrW$(&H5927) & 
ChrW$(&H5BD2), ChrW$(&H7ACB) & ChrW$(&H6625), _ 
                      ChrW$(&H96E8) & ChrW$(&H6C34), ChrW$(&H60CA) & 
ChrW$(&H86F0), ChrW$(&H6625) & ChrW$(&H5206), _ 
                      ChrW$(&H6E05) & ChrW$(&H660E), ChrW$(&H8C37) & 
ChrW$(&H96E8), ChrW$(&H7ACB) & ChrW$(&H590F), _ 
                      ChrW$(&H5C0F) & ChrW$(&H6EE1), ChrW$(&H8292) & 
ChrW$(&H79CD), ChrW$(&H590F) & ChrW$(&H81F3), _ 
                      ChrW$(&H5C0F) & ChrW$(&H6691), ChrW$(&H5927) & 
ChrW$(&H6691), ChrW$(&H7ACB) & ChrW$(&H79CB), _ 
                      ChrW$(&H5904) & ChrW$(&H6691), ChrW$(&H767D) & 
ChrW$(&H9732), ChrW$(&H79CB) & ChrW$(&H5206), _ 
                      ChrW$(&H5BD2) & ChrW$(&H9732), ChrW$(&H971C) & 
ChrW$(&H964D), ChrW$(&H7ACB) & ChrW$(&H51AC), _ 
                      ChrW$(&H5C0F) & ChrW$(&H96EA), ChrW$(&H5927) & 
ChrW$(&H96EA), ChrW$(&H51AC) & ChrW$(&H81F3))   '节气日的时差公式(时差为分钟)(从1900年大寒到现在这一节气的的分钟数) 
  offDate = (sTermYearLen * (CurUnYear - 1900)) / 60000 + 
vTermInfo(iTerm - 1) 
  '以DateDiff求出日期 
  GetiTermDay = Day(DateAdd("n", offDate, CDate("1900-Jan-06 
02:05:00")))   End Function 
Private Sub Form_Load() 
  Debug.Print GetiTermDay(2008, 2) 
  'will return 20,so Da Han (大寒)is 2008-Jan-20. 
End Sub