background image

Java 源码:JAVA 版农历和阳历转换源码

public class TestNongLi {
public static void main(String[] args) {
// 

 

调用农历日期转换阳历日期方法

    System.out.println(ChineseCalendar.sCalendarLundarToSolar(2008, 1, 1));
}
}
// 

 

自定义日历类

class ChineseCalendar {
// Array lIntLunarDay is stored in the monthly day information in every year 
from 1901 

to 2100 of the lunar calendar,
// The lunar calendar can only be 29 or 30 days every month, express with 

12(or 13) pieces of binary bit in one year,
// it is 30 days for 1 form in the corresponding location , otherwise it is 29 days 
  private static final int[] iLunarMonthDaysTable = {       

0x4ae0, 0xa570, 0x5268, 0xd260, 0xd950, 0x6aa8, 0x56a0, 0x9ad0, 0x4ae8, 
0x4ae0, // 1910 
            0xa4d8, 0xa4d0, 0xd250, 0xd548, 0xb550, 0x56a0, 0x96d0, 0x95b0, 
0x49b8, 0x49b0, // 1920 
            0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada8, 0x2b60, 0x9570, 0x4978, 
0x4970, 0x64b0, // 1930 
            0xd4a0,  0xea50, 0x6d48,  0x5ad0,  0x2b60, 0x9370,  0x92e0, 0xc968, 
0xc950, 0xd4a0, // 1940 
            0xda50,  0xb550, 0x56a0, 0xaad8,  0x25d0,  0x92d0, 0xc958,  0xa950, 
0xb4a8, 0x6ca0, // 1950 
            0xb550, 0x55a8, 0x4da0, 0xa5b0, 0x52b8, 0x52b0, 0xa950, 0xe950, 
0x6aa0, 0xad50, // 1960 
            0xab50, 0x4b60, 0xa570, 0xa570, 0x5260, 0xe930, 0xd950, 0x5aa8, 
0x56a0, 0x96d0, // 1970 
            0x4ae8, 0x4ad0, 0xa4d0, 0xd268, 0xd250, 0xd528, 0xb540, 0xb6a0, 
0x96d0, 0x95b0, // 1980 
            0x49b0, 0xa4b8, 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada0, 0xab60, 
0x9370, 0x4978, // 1990 
            0x4970, 0x64b0, 0x6a50, 0xea50, 0x6b28, 0x5ac0, 0xab60, 0x9368,