java怎么过农历节日?

公共类月球

{

私人int年;

私人int月;

私人int日;

私有布尔飞跃;

最终静态字符串chineseNumber[] =

{“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“十一”、“十二”};

最终静态字符串Big_Or_Small[] =

{“大”“小”“大”“小”“大”“大”“小”“大”“大”“小”“大”“大”“小”“大”“小”“大”};

私有字符串[] LunarHolDayName =

{ "小寒"、"大寒"、"立春"、"雨"、"惊蛰"、"春分"、"清明"、"谷雨"、"长夏"、"小满"、"芒籽"、"夏至日",

“小暑”“大暑”“立秋”“暑热”“白露”“秋分”“寒露”“初霜”“立冬”“小雪”“大雪”,

《冬天的至日》};

静态简单日期格式中文日期格式=新简单日期格式(

“yyyy MM DD Day”);

最终静态long[] lunarInfo = new long[]

{ 0x04bd8,0x04ae0,0570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,

0x09ad0,0x055d2,0x04ae0,05b6,04d0,0x0d250,0x1d255,

0x0b540,0x0d6a0,0da2,0x095b0,0x14977,0x04970,04b0,

0x0b4b5、0x06a50、0x06d40、0x1ab54、0x02b60、0x09570、0x052f2、

0x04970、0x06566、0x0d4a0、0x0ea50、0x06e95、0x05ad0、0x02b60、

0x186e3,0x092e0,0x1c8d7,0x0c950,0x0d4a0,0x1d8a6,0x0b550,

0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0950,0x0b557,

0x06ca0,0x0b550,0x15355,0x04da0,05d0,0x14573,0x052d0,

09a8,0x0e950,0x06aa0,0ea6,0b50,0x04b60,0ae4,

0570、0x05260、0x0f263、0x0d950、0x05b57、0x056a0、0x096d0、

0x04dd5、0x04ad0、04d0、0x0d4d4、0x0d250、0x0d558、0x0b540、

0x0b5a0,0x195a6,0x095b0,0x049b0,0974,04b0,0x0b27a,

0x06a50、0x06d40、0f46、0b60、0x09570、0x04af5、0x04970、

0x064b0、0x074a3、0x0ea50、0x06b58、0x055c0、0b60、0x096d5、

0x092e0、0x0c960、0x0d954、0x0d4a0、0x0da50、0x07552、0x056a0、

0bb7,0x025d0,0x092d0,0x0cab5,0950,0x0b4a0,0x0baa4,

0d50,0x055d9,0x04ba0,05b0,0x15176,0x052b0,0930,

0x07954,0x06aa0,0d50,0x05b52,0x04b60,06e6,04e0,

0x0d260、0x0ea65、0x0d530、0x05aa0、0x076a3、0x096d0、0x04bd7、

0x04ad0、04d0、0x1d0b6、0x0d250、0x0d520、0x0dd45、0x0b5a0、

0x056d0,0x055b2,0x049b0,0577,04b0,0a50,0x1b255,

0x06d20,0da 0 };

//= = = = =返回农历y年的总天数。

最终私有静态int yearDays(int y)

{

int i,sum = 348

for(I = 0x 8000;我& gt0x8我& gt& gt= 1)

{

if((lunar info[y-1900]& amp;我)!= 0)

sum+= 1;

}

return(sum+leap days(y));

}

//= = = = =返回农历Y年闰月的天数。

最终私有静态中间leapDays(int y)

{

if (leapMonth(y)!= 0)

{

if((lunar info[y-1900]& amp;0x10000)!= 0)

返回30;

其他

返回29;

}

其他

返回0;

}

//= = = = =返回农历Y年中哪个月是1-12,如果没有闰年则返回0。

最终私有静态int leapMonth(int y)

{

return(int)(lunar info[y-1900]& amp;0xf);

}

//= = = = =返回农历Y年中M个月的总天数。

最终私有静态int monthDays(int y,int m)

{

if((lunar info[y-1900]& amp;(0x 10000 & gt;& gtm)) == 0)

返回29;

其他

返回30;

}

//= = = = =返回农历Y年的十二生肖。

最终公共字符串animalsYear()

{

最终字符串[] Animals =新字符串[]

{“鼠”、“牛”、“虎”、“兔”、“龙”、“蛇”、“马”、“羊”、“猴”、“鸡”、“狗”、“猪”};

返回动物[(第4年)% 12];

}

//= = = = =来月日偏移返回主支,0=甲子。

最终私有静态字符串cyclicalm(int num)

{

最终字符串[] Gan =新字符串[]

{“甲”、“乙”、“丙”、“丁”、“戊”、“己”、“己”、“辛”、“人”、“鬼”};

最终字符串[] Zhi =新字符串[]

{“子”、“丑”、“阴”、“毛”、“陈”、“司”、“吴”、“卫”、“申”、“尤”、“许”、“海”};

return(Gan[num % 10]+Zhi[num % 12]);

}

//= = = = =传入偏移量返回主分支,0=甲子。

最终公共字符串循环()

{

int num = year-1900+36;

return(cyclicalm(num));

}

/** */

/**

*阴历对应Y年M月D日。yearCyl3:农历年和1864有什么区别?moncyl 4:1900 65438+10月31以来的闰月数。

* dayCyl5:与1900 65438+10月31不同的天数,加40?

*

* @param cal

* @返回

*/

公共农历(日历cal)

{

// cal.add(cal.get(Calendar。月日),1);

@SuppressWarnings("未使用")

int yearCyl,monCyl,dayCyl

int leap month = 0;

Date baseDate = null

尝试

{

Basedate =中文日期格式。parse(" 1900 65438+10月31 ");

}

捕捉(ParseException e)

{

e . printstacktrace();//若要更改catch语句体,请使用

//选项|文件模板。

}

//找到与1900 65438+10月31不同的天数。

int offset = (int) ((cal.getTime()。getTime()-base date . getTime())/86400000 l);

dayCyl =偏移量+40;

monCyl = 14;

//用偏移量减去每个农历年的天数。

//计算今天是农历的哪一天。

// i最后的结果是农历的那一年。

// offset是一年中的某一天。

int iYear,days ofyear = 0;

for(iYear = 1900;iYear & lt2050 & amp& ampoffset & gt0;iYear++)

{

days ofyear = year days(iYear);

offset-= days ofyear;

monCyl+= 12;

}

if(offset & lt;0)

{

offset+= days ofyear;

iYear-;

monCyl-= 12;

}

//农历年

year = iYear

year cyl = iYear-1864;

leap month = leap month(iYear);//在哪个月份,1-12。

leap = false

//将每个月(农历)的日子用一年中的日子偏移量逐一减去,求出这个月的日子。

int iMonth,days ofmonth = 0;

for(iMonth = 1;iMonth & lt13。& ampoffset & gt0;iMonth++)

{

//闰月

if(leap month & gt;0 & amp& ampiMonth = =(leap month+1);& amp!飞跃)

{

-iMonth;

leap = true

daysOfMonth = leapDays(年);

}

其他

daysOfMonth = monthDays(year,iMonth);

offset-= days ofmonth;

//提起闰月

如果(飞跃& amp& ampiMonth == (leapMonth + 1))

leap = false

如果(!飞跃)

moncyl++;

}

//当偏移量为0,并且刚刚计算的月份是闰月时,需要进行修正。

if(offset = = 0 & amp;& ampleapMonth & gt0 & amp& ampiMonth == leapMonth + 1)

{

如果(跳跃)

{

leap = false

}

其他

{

leap = true

-iMonth;

-monCyl;

}

}

//如果偏移量小于0,也要修正。

if(offset & lt;0)

{

offset+= days ofmonth;

-iMonth;

-monCyl;

}

month = iMonth

日=偏移量+1;

}

公共静态字符串getChinaDayString(int day)

{

字符串chineseTen[] =

{“初”、“十”、“二十”、“三十”};

int n = day % 10 == 0?9:日% 10-1;

if(day & gt;30)

返回“”;

if (day == 10)

返回“第十天”;

其他

返回chineseTen[day/10]+chineseNumber[n];

}

公共字符串toString()

{

return/* cyclic()+" Year "+*/(闰?“闰”:“)

+Chinese number[month-1]+" month "+getchina daystring(day);

}

公共字符串numeric_md()

{//返回阿拉伯数字的农历日期。

字符串temp _ day

字符串temp _ mon

temp _ mon = month & lt10 ?“0”+月:“+月;

temp _ day = day & lt10 ?“0”+天:“+天;

返回temp _ mon+temp _ day;

}

公共字符串get_month()

{//返回农历的月份。

返回chineseNumber[month-1];

}

公共字符串get_date()

{//返回农历的第几天。

返回getchina daystring(day);

}

公共字符串get_Big_Or_Small()

{//返回月份的大小。

返回Big _ Or _ Small[month-1];

}

}