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];
}
}