使用JAVA农历转换农历和阳历的方法
//测试类
publicclassTest{
publicstaticvoidmain(String[]args){
//调用农历日期转换阳历日期方法
System.out.println(Calendar.sCalendarLundarToSolar(2006,1,1));
}
}
//自定义日历类
classCalendar{
//ArraylIntLunarDayisstoredinthemonthlydayinformationineveryyearfrom1901to2100ofthelunarcalendar,
//Thelunarcalendarcanonlybe29or30dayseverymonth,expresswith12(or13)piecesofbinarybitinoneyear,
//itis30daysfor1forminthecorrespondinglocation,otherwiseitis29days
privatestaticfinalint[]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,0x92e0,0xc960,//2000
0xd4a8,0xd4a0,0xda50,0x5aa8,0x56a0,0xaad8,0x25d0,0x92d0,0xc958,0xa950,//2010
0xb4a0,0xb550,0xb550,0x55a8,0x4ba0,0xa5b0,0x52b8,0x52b0,0xa930,0x74a8,//2020
0x6aa0,0xad50,0x4da8,0x4b60,0x9570,0xa4e0,0xd260,0xe930,0xd530,0x5aa0,//2030
0x6b50,0x96d0,0x4ae8,0x4ad0,0xa4d0,0xd258,0xd250,0xd520,0xdaa0,0xb5a0,//2040
0x56d0,0x4ad8,0x49b0,0xa4b8,0xa4b0,0xaa50,0xb528,0x6d20,0xada0,0x55b0//2050
};
//ArrayiLunarLeapMonthTablepreservesthelunarcalendarleapmonthfrom1901to2050,
//ifitis0expressnottohave,everybytewasstoredfortwoyears
privatestaticfinalchar[]iLunarLeapMonthTable={
0x00,0x50,0x04,0x00,0x20,//1910
0x60,0x05,0x00,0x20,0x70,//1920
0x05,0x00,0x40,0x02,0x06,//1930
0x00,0x50,0x03,0x07,0x00,//1940
0x60,0x04,0x00,0x20,0x70,//1950
0x05,0x00,0x30,0x80,0x06,//1960
0x00,0x40,0x03,0x07,0x00,//1970
0x50,0x04,0x08,0x00,0x60,//1980
0x04,0x0a,0x00,0x60,0x05,//1990
0x00,0x30,0x80,0x05,0x00,//2000
0x40,0x02,0x07,0x00,0x50,//2010
0x04,0x09,0x00,0x60,0x04,//2020
0x00,0x20,0x60,0x05,0x00,//2030
0x30,0xb0,0x06,0x00,0x50,//2040
0x02,0x07,0x00,0x50,0x03//2050
};
//ArrayiSolarLunarTablestoredtheoffsetdays
//inNewYearofsolarcalendarandlunarcalendarfrom1901to2050;
privatestaticfinalchar[]iSolarLunarOffsetTable={
49,38,28,46,34,24,43,32,21,40,//1910
29,48,36,25,44,34,22,41,31,50,//1920
38,27,46,35,23,43,32,22,40,29,//1930
47,36,25,44,34,23,41,30,49,38,//1940
26,45,35,24,43,32,21,40,28,47,//1950
36,26,44,33,23,42,30,48,38,27,//1960
45,35,24,43,32,20,39,29,47,36,//1970
26,45,33,22,41,30,48,37,27,46,//1980
35,24,43,32,50,39,28,47,36,26,//1990
45,34,22,40,30,49,37,27,46,35,//2000
23,42,31,21,39,28,48,37,25,44,//2010
33,23,41,31,50,39,28,47,35,24,//2020
42,30,21,40,28,47,36,25,43,33,//2030
22,41,30,49,37,26,44,33,23,42,//2040
31,21,40,29,47,36,25,44,32,22,//2050
};
staticbooleanbIsSolarLeapYear(intiYear){
return((iYear%4==0)&&(iYear%100!=0)||iYear%400==0);
}
//Thedaysinthemonthofsolarcalendar
staticintiGetSYearMonthDays(intiYear,intiMonth){
if((iMonth==1)||(iMonth==3)||(iMonth==5)||
(iMonth==7)||(iMonth==8)||(iMonth==10)||(iMonth==12))
return31;
elseif((iMonth==4)||(iMonth==6)||(iMonth==9)||(iMonth==11))
return30;
publicclassTest{
publicstaticvoidmain(String[]args){
//调用农历日期转换阳历日期方法
System.out.println(Calendar.sCalendarLundarToSolar(2006,1,1));
}
}
//自定义日历类
classCalendar{
//ArraylIntLunarDayisstoredinthemonthlydayinformationineveryyearfrom1901to2100ofthelunarcalendar,
//Thelunarcalendarcanonlybe29or30dayseverymonth,expresswith12(or13)piecesofbinarybitinoneyear,
//itis30daysfor1forminthecorrespondinglocation,otherwiseitis29days
privatestaticfinalint[]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,0x92e0,0xc960,//2000
0xd4a8,0xd4a0,0xda50,0x5aa8,0x56a0,0xaad8,0x25d0,0x92d0,0xc958,0xa950,//2010
0xb4a0,0xb550,0xb550,0x55a8,0x4ba0,0xa5b0,0x52b8,0x52b0,0xa930,0x74a8,//2020
0x6aa0,0xad50,0x4da8,0x4b60,0x9570,0xa4e0,0xd260,0xe930,0xd530,0x5aa0,//2030
0x6b50,0x96d0,0x4ae8,0x4ad0,0xa4d0,0xd258,0xd250,0xd520,0xdaa0,0xb5a0,//2040
0x56d0,0x4ad8,0x49b0,0xa4b8,0xa4b0,0xaa50,0xb528,0x6d20,0xada0,0x55b0//2050
};
//ArrayiLunarLeapMonthTablepreservesthelunarcalendarleapmonthfrom1901to2050,
//ifitis0expressnottohave,everybytewasstoredfortwoyears
privatestaticfinalchar[]iLunarLeapMonthTable={
0x00,0x50,0x04,0x00,0x20,//1910
0x60,0x05,0x00,0x20,0x70,//1920
0x05,0x00,0x40,0x02,0x06,//1930
0x00,0x50,0x03,0x07,0x00,//1940
0x60,0x04,0x00,0x20,0x70,//1950
0x05,0x00,0x30,0x80,0x06,//1960
0x00,0x40,0x03,0x07,0x00,//1970
0x50,0x04,0x08,0x00,0x60,//1980
0x04,0x0a,0x00,0x60,0x05,//1990
0x00,0x30,0x80,0x05,0x00,//2000
0x40,0x02,0x07,0x00,0x50,//2010
0x04,0x09,0x00,0x60,0x04,//2020
0x00,0x20,0x60,0x05,0x00,//2030
0x30,0xb0,0x06,0x00,0x50,//2040
0x02,0x07,0x00,0x50,0x03//2050
};
//ArrayiSolarLunarTablestoredtheoffsetdays
//inNewYearofsolarcalendarandlunarcalendarfrom1901to2050;
privatestaticfinalchar[]iSolarLunarOffsetTable={
49,38,28,46,34,24,43,32,21,40,//1910
29,48,36,25,44,34,22,41,31,50,//1920
38,27,46,35,23,43,32,22,40,29,//1930
47,36,25,44,34,23,41,30,49,38,//1940
26,45,35,24,43,32,21,40,28,47,//1950
36,26,44,33,23,42,30,48,38,27,//1960
45,35,24,43,32,20,39,29,47,36,//1970
26,45,33,22,41,30,48,37,27,46,//1980
35,24,43,32,50,39,28,47,36,26,//1990
45,34,22,40,30,49,37,27,46,35,//2000
23,42,31,21,39,28,48,37,25,44,//2010
33,23,41,31,50,39,28,47,35,24,//2020
42,30,21,40,28,47,36,25,43,33,//2030
22,41,30,49,37,26,44,33,23,42,//2040
31,21,40,29,47,36,25,44,32,22,//2050
};
staticbooleanbIsSolarLeapYear(intiYear){
return((iYear%4==0)&&(iYear%100!=0)||iYear%400==0);
}
//Thedaysinthemonthofsolarcalendar
staticintiGetSYearMonthDays(intiYear,intiMonth){
if((iMonth==1)||(iMonth==3)||(iMonth==5)||
(iMonth==7)||(iMonth==8)||(iMonth==10)||(iMonth==12))
return31;
elseif((iMonth==4)||(iMonth==6)||(iMonth==9)||(iMonth==11))
return30;
本文地址:http://www.45fan.com/dnjc/69374.html