公历转农历
(创建时间:2012年03月29日 17:08:00)
Jangogo : 


Dim  MonthAdd(11),  NongliData(99) 
 Dim  curTime,  curYear,  curMonth,  curDay 
 Dim  i,  m,  n,  k,  isEnd,  bit,  TheDate 
 Private  Sub  Command1_Click() 
        Text2.Text  =  lunarDay(Text1.Text) 
 End  Sub 
 Public  Function  lunarDay(inDay)  As  String 
        MonthAdd(0)  =  0 
        MonthAdd(1)  =  31 
        MonthAdd(2)  =  59 
        MonthAdd(3)  =  90 
        MonthAdd(4)  =  120 
        MonthAdd(5)  =  151 
        MonthAdd(6)  =  181 
        MonthAdd(7)  =  212 
        MonthAdd(8)  =  243 
        MonthAdd(9)  =  273 
        MonthAdd(10)  =  304 
        MonthAdd(11)  =  334 
         
        NongliData(0)  =  2635 
        NongliData(1)  =  333387 
        NongliData(2)  =  1701 
        NongliData(3)  =  1748 
        NongliData(4)  =  267701 
        NongliData(5)  =  694 
        NongliData(6)  =  2391 
        NongliData(7)  =  133423 
        NongliData(8)  =  1175 
        NongliData(9)  =  396438 
        NongliData(10)  =  3402 
        NongliData(11)  =  3749 
        NongliData(12)  =  331177 
        NongliData(13)  =  1453 
        NongliData(14)  =  694 
        NongliData(15)  =  201326 
        NongliData(16)  =  2350 
        NongliData(17)  =  465197 
        NongliData(18)  =  3221 
        NongliData(19)  =  3402 
        NongliData(20)  =  400202 
        NongliData(21)  =  2901 
        NongliData(22)  =  1386 
        NongliData(23)  =  267611 
        NongliData(24)  =  605 
        NongliData(25)  =  2349 
        NongliData(26)  =  137515 
        NongliData(27)  =  2709 
        NongliData(28)  =  464533 
        NongliData(29)  =  1738 
        NongliData(30)  =  2901 
        NongliData(31)  =  330421 
        NongliData(32)  =  1242 
        NongliData(33)  =  2651 
        NongliData(34)  =  199255 
        NongliData(35)  =  1323 
        NongliData(36)  =  529706 
        NongliData(37)  =  3733 
        NongliData(38)  =  1706 
        NongliData(39)  =  398762 
        NongliData(40)  =  2741 
        NongliData(41)  =  1206 
        NongliData(42)  =  267438 
        NongliData(43)  =  2647 
        NongliData(44)  =  1318 
        NongliData(45)  =  204070 
        NongliData(46)  =  3477 
        NongliData(47)  =  461653 
        NongliData(48)  =  1386 
        NongliData(49)  =  2413 
        NongliData(50)  =  330077 
        NongliData(51)  =  1197 
        NongliData(52)  =  2637 
        NongliData(53)  =  268877 
        NongliData(54)  =  3365 
        NongliData(55)  =  531109 
        NongliData(56)  =  2900 
        NongliData(57)  =  2922 
        NongliData(58)  =  398042 
        NongliData(59)  =  2395 
        NongliData(60)  =  1179 
        NongliData(61)  =  267415 
        NongliData(62)  =  2635 
        NongliData(63)  =  661067 
        NongliData(64)  =  1701 
        NongliData(65)  =  1748 
        NongliData(66)  =  398772 
        NongliData(67)  =  2742 
        NongliData(68)  =  2391 
        NongliData(69)  =  330031 
        NongliData(70)  =  1175 
        NongliData(71)  =  1611 
        NongliData(72)  =  200010 
        NongliData(73)  =  3749 
        NongliData(74)  =  527717 
        NongliData(75)  =  1452 
        NongliData(76)  =  2742 
        NongliData(77)  =  332397 
        NongliData(78)  =  2350 
        NongliData(79)  =  3222 
        NongliData(80)  =  268949 
        NongliData(81)  =  3402 
        NongliData(82)  =  3493 
        NongliData(83)  =  133973 
        NongliData(84)  =  1386 
        NongliData(85)  =  464219 
        NongliData(86)  =  605 
        NongliData(87)  =  2349 
        NongliData(88)  =  334123 
        NongliData(89)  =  2709 
        NongliData(90)  =  2890 
        NongliData(91)  =  267946 
        NongliData(92)  =  2773 
        NongliData(93)  =  592565 
        NongliData(94)  =  1210 
        NongliData(95)  =  2651 
        NongliData(96)  =  395863 
        NongliData(97)  =  1323 
        NongliData(98)  =  2707 
        NongliData(99)  =  265877 

        If  inDay  =  ""  Or  Not  IsDate(inDay)  Then 
                curTime  =  Now() 
        Else 
                curTime  =  CDate(inDay) 
        End  If 
         
        If  DateDiff("d",  curTime,  CDate("1921-2-8"))  >  0  Then 
                Exit  Function 
        End  If 
         
        curYear  =  Year(curTime) 
        curMonth  =  Month(curTime) 
        curDay  =  Day(curTime) 
   
        TheDate  =  (curYear  -  1921)  *  365  +  Int((curYear  -  1921)  /  4)  +  _ 
        curDay  +  MonthAdd(curMonth  -  1)  -  38 
        If  ((curYear  Mod  4)  =  0  And  curMonth  >  2)  Then 
          TheDate  =  TheDate  +  1 
        End  If 
         
        isEnd  =  0 
        m  =  0 
        '------------------------------------ 
        Do 
                If  (NongliData(m)  <  4095)  Then 
                        k  =  11 
                Else 
                        k  =  12 
                End  If 
                 
                n  =  k 
                '------------------------------------ 
                Do 
                        If  (n  <  0)  Then 
                                Exit  Do 
                        End  If 
                        bit  =  NongliData(m) 
                        For  i  =  1  To  n  Step  1 
                                bit  =  Int(bit  /  2) 
                        Next 
                        bit  =  bit  Mod  2 
                         
                       If  (TheDate  <=  29  +  bit)  Then 
                                isEnd  =  1 
                                Exit  Do 
                        End  If 
                         
                       TheDate  =  TheDate  -  29  -  bit 
                         
                       n  =  n  -  1 
                Loop 
                '------------------------------------ 
                If  (isEnd  =  1)  Then 
                        Exit  Do 
                End  If 
                 
                m  =  m  +  1 
        Loop 
        '------------------------------------ 
         
        curYear  =  1921  +  m 
        curMonth  =  k  -  n  +  1 
        curDay  =  TheDate 
         
        If  (k  =  12)  Then 
                If  (curMonth  =  (Int(NongliData(m)  /  65536)  +  1))  Then 
                        curMonth  =  1  -  curMonth 
                ElseIf  (curMonth  >  (Int(NongliData(m)  /  65536)  +  1))  Then 
                        curMonth  =  curMonth  -  1 
                End  If 
        End  If 
         
        lunarDay  =  curYear  &  "/"  &  curMonth  &  "/"  &  curDay 

 End  Function

文档中心