189 8069 5689

农历代码java java简单日历代码

java计算农历日期

import java.util.Scanner;public class PrintCalendar { /**

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网站空间、营销软件、网站建设、鹿邑网站维护、网站推广。

* @param args

*/

public static void main(String[] args) {

System.out.println("******************欢 迎 使 用 万 年 历******************");

Scanner input = new Scanner(System.in);

System.out.print("\n请选择年份: ");

int year = input.nextInt();

System.out.print("\n请选择月份: ");

int month = input.nextInt();

System.out.println(); int days = 0; // 存储当月的天数

boolean isRn;

/* 判断是否是闰年 */

if (year % 4 == 0 !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年

isRn = true; // 闰年

} else {

isRn = false;// 平年

} /* 计算输入的年份之前的天数 */

int totalDays = 0;

for (int i = 1900; i year; i++) {

/* 判断闰年或平年,并进行天数累加 */

if (i % 4 == 0 !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年

totalDays = totalDays + 366; // 闰年366天

} else {

totalDays = totalDays + 365; // 平年365天

}

} /* 计算输入月份之前的天数 */

int beforeDays = 0;

for (int i = 1; i = month; i++) {

switch (i) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

days = 31;

break;

case 2:

if (isRn) {

days = 29;

} else {

days = 28;

}

break;

default:

days = 30;

break;

}

if (i month) {

beforeDays = beforeDays + days;

}

}

totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数 /* 计算星期几 */

int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6

int temp = 1 + totalDays % 7; // 从1900年1月1日推算

if (temp == 7) { // 求当月第一天

firstDayOfMonth = 0; // 周日

} else {

firstDayOfMonth = temp;

} /* 输出日历 */

System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for (int nullNo = 0; nullNo firstDayOfMonth; nullNo++) {

System.out.print("\t"); // 输出空格

}

for (int i = 1; i = days; i++) {

System.out.print(i + "\t");

if ((totalDays + i - 1) % 7 == 5) { // 如果当天为周六,输出换行

System.out.println();

}

}

}

}

急需“农历日历JAVA代码”

(把代码复制到一个新空白网页中即可,别看演示,演示的代码不对)

代码如下:

SCRIPT language=JavaScript

!--

/*****************************************************************************

日期资料

*****************************************************************************/

var lunarInfo=new Array(

0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,

0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,

0x04970,0x0a4b0,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,0x0a950,0x0b557,

0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,

0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,

0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,

0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,

0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,

0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,

0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,

0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,

0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,

0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)

var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");

var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");

var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");

var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")

var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758)

var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')

var nStr2 = new Array('初','十','廿','卅',' ')

var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

//国历节日 *表示放假日

var sFtv = new Array(

"0101*元旦",

"0214 情人节",

"0308 妇女节",

"0312 植树节",

"0315 消费者权益日",

"0317 St. Patrick's",

"0401 愚人节",

"0501 劳动节",

"0504 青年节",

"0512 护士节",

"0512 茵生日",

"0601 儿童节",

"0614 Flag Day",

"0701 建党节 香港回归纪念",

"0703 炎黄在线诞辰",

"0718 托普诞辰",

"0801 建军节",

"0808 父亲节",

"0909 毛泽东逝世纪念",

"0910 教师节",

"0928 孔子诞辰",

"1001*国庆节",

"1006 老人节",

"1024 联合国日",

"1111 Veteran's / Remembrance Day",

"1112 孙中山诞辰纪念",

"1220 澳门回归纪念",

"1225 Christmas Day",

"1226 毛泽东诞辰纪念")

//农历节日 *表示放假日

var lFtv = new Array(

"0101*春节",

"0115 元宵节",

"0328 我生日",

"0505 端午节",

"0707 七夕情人节",

"0715 中元节",

"0815 中秋节",

"0909 重阳节",

"1208 腊八节",

"1224 小年",

"0100*除夕")

//某月的第几个星期几

var wFtv = new Array(

"0131 Martin Luther King Day",

"0231 President's Day",

"0520 母亲节",

"0530 Armed Forces Day",

"0531 Victoria Day",

"0716 合作节",

"0730 被奴役国家周",

"0811 Civic Holiday",

"0911 Labor Holiday",

"1021 Columbus Day",

"1144 Thanksgiving")

/*****************************************************************************

日期计算

*****************************************************************************/

//====================================== 传回农历 y年的总天数

function lYearDays(y) {

var i, sum = 348

for(i=0x8000; i0x8; i=1) sum += (lunarInfo[y-1900] i)? 1: 0

return(sum+leapDays(y))

}

//====================================== 传回农历 y年闰月的天数

function leapDays(y) {

if(leapMonth(y)) return((lunarInfo[y-1900] 0x10000)? 30: 29)

else return(0)

}

//====================================== 传回农历 y年闰哪个月 1-12 , 没闰传回 0

function leapMonth(y) {

return(lunarInfo[y-1900] 0xf)

}

//====================================== 传回农历 y年m月的总天数

function monthDays(y,m) {

return( (lunarInfo[y-1900] (0x10000m))? 30: 29 )

}

//====================================== 算出农历, 传入日期物件, 传回农历日期物件

// 该物件属性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl

function Lunar(objDate) {

var i, leap=0, temp=0

var baseDate = new Date(1900,0,31)

var offset = (objDate - baseDate)/86400000

this.dayCyl = offset + 40

this.monCyl = 14

for(i=1900; i2050 offset0; i++) {

temp = lYearDays(i)

offset -= temp

this.monCyl += 12

}

if(offset0) {

offset += temp;

i--;

this.monCyl -= 12

}

this.year = i

this.yearCyl = i-1864

leap = leapMonth(i) //闰哪个月

this.isLeap = false

for(i=1; i13 offset0; i++) {

//闰月

if(leap0 i==(leap+1) this.isLeap==false)

{ --i; this.isLeap = true; temp = leapDays(this.year); }

else

{ temp = monthDays(this.year, i); }

//解除闰月

if(this.isLeap==true i==(leap+1)) this.isLeap = false

offset -= temp

if(this.isLeap == false) this.monCyl ++

}

if(offset==0 leap0 i==leap+1)

if(this.isLeap)

{ this.isLeap = false; }

else

{ this.isLeap = true; --i; --this.monCyl;}

if(offset0){ offset += temp; --i; --this.monCyl; }

this.month = i

this.day = offset + 1

}

//==============================传回国历 y年某m+1月的天数

function solarDays(y,m) {

if(m==1)

return(((y%4 == 0) (y%100 != 0) || (y%400 == 0))? 29: 28)

else

return(solarMonth[m])

}

//============================== 传入 offset 传回干支, 0=甲子

function cyclical(num) {

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

}

//============================== 月历属性

function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

this.isToday = false;

//国历

this.sYear = sYear;

this.sMonth = sMonth;

this.sDay = sDay;

this.week = week;

//农历

this.lYear = lYear;

this.lMonth = lMonth;

this.lDay = lDay;

this.isLeap = isLeap;

//干支

this.cYear = cYear;

this.cMonth = cMonth;

this.cDay = cDay;

this.color = '';

this.lunarFestival = ''; //农历节日

this.solarFestival = ''; //国历节日

this.solarTerms = ''; //节气

}

//===== 某年的第n个节气为几日(从0小寒起算)

function sTerm(y,n) {

var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) )

return(offDate.getUTCDate())

}

//============================== 传回月历物件 (y年,m+1月)

function calendar(y,m) {

var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2

var lDPOS = new Array(3)

var n = 0

var firstLM = 0

sDObj = new Date(y,m,1) //当月一日日期

this.length = solarDays(y,m) //国历当月天数

this.firstWeek = sDObj.getDay() //国历当月1日星期几

for(var i=0;ithis.length;i++) {

if(lDlX) {

sDObj = new Date(y,m,i+1) //当月一日日期

lDObj = new Lunar(sDObj) //农历

lY = lDObj.year //农历年

lM = lDObj.month //农历月

lD = lDObj.day //农历日

lL = lDObj.isLeap //农历是否闰月

lX = lL? leapDays(lY): monthDays(lY,lM) //农历当月最后一天

if(n==0) firstLM = lM

lDPOS[n++] = i-lD+1

}

//sYear,sMonth,sDay,week,

//lYear,lMonth,lDay,isLeap,

//cYear,cMonth,cDay

this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],

lY, lM, lD++, lL,

cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )

if((i+this.firstWeek)%7==0) this[i].color = 'red' //周日颜色

if((i+this.firstWeek)%14==13) this[i].color = 'red' //周休二日颜色

}

//节气

tmp1=sTerm(y,m*2 )-1

tmp2=sTerm(y,m*2+1)-1

this[tmp1].solarTerms = solarTerm[m*2]

this[tmp2].solarTerms = solarTerm[m*2+1]

if(m==3) this[tmp1].color = 'red' //清明颜色

//国历节日

for(i in sFtv)

if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))

if(Number(RegExp.$1)==(m+1)) {

this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '

if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'

}

//月周节日

for(i in wFtv)

if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))

if(Number(RegExp.$1)==(m+1)) {

tmp1=Number(RegExp.$2)

tmp2=Number(RegExp.$3)

this[((this.firstWeektmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '

}

//农历节日

for(i in lFtv)

if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {

tmp1=Number(RegExp.$1)-firstLM

if(tmp1==-11) tmp1=1

if(tmp1 =0 tmp1n) {

tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1

if( tmp2 = 0 tmp2this.length) {

this[tmp2].lunarFestival += RegExp.$4 + ' '

if(RegExp.$3=='*') this[tmp2].color = 'red'

}

}

}

//黑色星期五

if((this.firstWeek+12)%7==5)

this[12].solarFestival += '黑色星期五 '

//今日

if(y==tY m==tM) this[tD-1].isToday = true;

}

//====================== 中文日期

function cDay(d){

var s;

switch (d) {

case 10:

s = '初十'; break;

case 20:

s = '二十'; break;

break;

case 30:

s = '三十'; break;

break;

default :

s = nStr2[Math.floor(d/10)];

s += nStr1[d%10];

}

return(s);

}

///////////////////////////////////////////////////////////////////////////////

var cld;

function drawCld(SY,SM) {

var i,sD,s,size;

cld = new calendar(SY,SM);

if(SY1874 SY1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874)

if(SY1908 SY1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908)

if(SY1911 SY1950) yDisplay = '民国' + (((SY-1911)==1)?'元':SY-1911)

// if(SY1949) yDisplay = '共和国' + (((SY-1949)==1)?'元':SY-1949)

// GZ.innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年   【'+Animals[(SY-4)%12]+'】';

if(SY1949) yDisplay = ''

GZ.innerHTML = yDisplay +' 农历' + cyclical(SY-1900+36) + '年   【'+Animals[(SY-4)%12]+'】';

YMBG.innerHTML = " " + SY + "BR " + monthName[SM];

for(i=0;i42;i++) {

sObj=eval('SD'+ i);

lObj=eval('LD'+ i);

sObj.className = '';

sD = i - cld.firstWeek;

if(sD-1 sDcld.length) { //日期内

sObj.innerHTML = sD+1;

if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色

sObj.style.color = cld[sD].color; //国定假日颜色

if(cld[sD].lDay==1) //显示农历月

lObj.innerHTML = 'b'+(cld[sD].isLeap?'闰':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'/b';

else //显示农历日

lObj.innerHTML = cDay(cld[sD].lDay);

s=cld[sD].lunarFestival;

if(s.length0) { //农历节日

if(s.length6) s = s.substr(0, 4)+'…';

s = s.fontcolor('red');

}

else { //国历节日

s=cld[sD].solarFestival;

if(s.length0) {

size = (s.charCodeAt(0)0 s.charCodeAt(0)128)?8:4;

if(s.lengthsize+2) s = s.substr(0, size)+'…';

s = s.fontcolor('blue');

}

else { //廿四节气

s=cld[sD].solarTerms;

if(s.length0) s = s.fontcolor('limegreen');

}

}

if(s.length0) lObj.innerHTML = s;

}

else { //非日期

sObj.innerHTML = '';

lObj.innerHTML = '';

}

}

}

function changeLong()

{

var y,m,ly,lm,id,im,iy,yangy,yangm,deltm,miny,tt;

CLD.SY.selectedIndex=CLD.D1.selectedIndex;

CLD.SM.selectedIndex=CLD.D2.selectedIndex;

yangm=0;yangy=0;

tt=true;

while (tt)

{

yangm=0;yangy=0;

changeCld();

for(i=0;i42;i++)

{

sD = i - cld.firstWeek;

if(sD-1 sDcld.length)

{ //日期内

if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)(cld[sD].lYear==CLD.D1.selectedIndex+1900))

{

yangy=CLD.SY.selectedIndex+1900; yangm=CLD.SM.selectedIndex ;

tt=false;

break;

}

}

}

if (!tt) break;

pushBtm('MD');

changeCld();

// alert(CLD.SY.selectedIndex+" "+CLD.SM.selectedIndex);

for(i=0;i42;i++)

{

sD = i - cld.firstWeek;

if(sD-1 sDcld.length)

{ //日期内

if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)(cld[sD].lYear==CLD.D1.selectedIndex+1900))

{

yangy=CLD.SY.selectedIndex+1900; yangm=CLD.SM.selectedIndex ;

tt=false;

break;

}

}

}

break;

}

// alert(yangy+" "+yangm);

//CLD.SY.selectedIndex=yangy;//-1900;

//pushBtm('YU');

//pushBtm('YD');

CLD.SM.selectedIndex=yangm;

pushBtm('MD');

pushBtm('MU');

}

//changeLong end

function changeCld() {

var y,m;

y=CLD.SY.selectedIndex+1900;

m=CLD.SM.selectedIndex;

drawCld(y,m);

}

function pushBtm(K) {

switch (K){

case 'YU' :

if(CLD.SY.selectedIndex0) CLD.SY.selectedIndex--;

break;

case 'YD' :

if(CLD.SY.selectedIndex149) CLD.SY.selectedIndex++;

break;

case 'MU' :

if(CLD.SM.selectedIndex0) {

CLD.SM.selectedIndex--;

}

else {

CLD.SM.selectedIndex=11;

if(CLD.SY.selectedIndex0) CLD.SY.selectedIndex--;

}

break;

case 'MD' :

if(CLD.SM.selectedIndex11) {

CLD.SM.selectedIndex++;

}

else {

CLD.SM.selectedIndex=0;

if(CLD.SY.selectedIndex149) CLD.SY.selectedIndex++;

}

break;

default :

CLD.SY.selectedIndex=tY-1900;

CLD.SM.selectedIndex=tM;

}

changeCld();

}

var Today = new Date();

var tY = Today.getFullYear();

var tM = Today.getMonth();

var tD = Today.getDate();

//////////////////////////////////////////////////////////////////////////////

var width = "130";

var offsetx = 2;

var offsety = 16;

var x = 0;

var y = 0;

var snow = 0;

var sw = 0;

var cnt = 0;

var dStyle;

document.onmousemove = mEvn;

//显示详细日期资料

function mOvr(v) {

var s,festival;

var sObj=eval('SD'+ v);

var d=sObj.innerHTML-1;

//sYear,sMonth,sDay,week,

//lYear,lMonth,lDay,isLeap,

//cYear,cMonth,cDay

if(sObj.innerHTML!='') {

sObj.style.cursor = 's-resize';

if(cld[d].solarTerms == '' cld[d].solarFestival == '' cld[d].lunarFestival == '')

festival = '';

else

festival = 'TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"TRTD'+

'FONT COLOR="#000000" STYLE="font-size:9pt;"'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'/FONT/TD'+

'/TR/TABLE';

s= 'TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"TRTD' +

'TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0TRTD ALIGN="right"FONT COLOR="#ffffff" STYLE="font-size:9pt;"'+

cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日br星期'+cld[d].week+'br'+

'font color="violet"农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日/fontbr'+

'font color="yellow"'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日/font'+

'/FONT/TD/TR/TABLE'+ festival +'/TD/TR/TABLE';

document.all["detail"].innerHTML = s;

if (snow == 0) {

dStyle.left = x+offsetx-(width/2);

dStyle.top = y+offsety;

dStyle.visibility = "visible";

snow = 1;

}

}

}

//清除详细日期资料

function mOut() {

if ( cnt = 1 ) { sw = 0 }

if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}

else cnt++;

}

//取得位置

function mEvn() {

x=event.x;

y=event.y;

if (document.body.scrollLeft)

{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}

if (snow){

dStyle.left = x+offsetx-(width/2)

dStyle.top = y+offsety

}

}

///////////////////////////////////////////////////////////////////////////

function tick() {

var today

today = new Date()

Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");

// Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)

window.setTimeout("tick()", 1000);

}

function setCookie(name, value) {

var today = new Date()

var expires = new Date()

expires.setTime(today.getTime() + 1000*60*60*24*365)

document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()

}

function getCookie(Name) {

var search = Name + "="

if(document.cookie.length 0) {

offset = document.cookie.indexOf(search)

if(offset != -1) {

offset += search.length

end = document.cookie.indexOf(";", offset)

if(end == -1) end = document.cookie.length

return unescape(document.cookie.substring(offset, end))

}

else return ""

}

}

/////////////////////////////////////////////////////////

function initial() {

dStyle = detail.style;

CLD.SY.selectedIndex=tY-1900;

CLD.SM.selectedIndex=tM;

drawCld(tY,tM);

// CLD.TZ.selectedIndex=getCookie("TZ");

// changeTZ();

tick();

}

//--

/SCRIPT

STYLE.todyaColor {

BACKGROUND-COLOR: aqua

}

/STYLE

META content="Microsoft FrontPage 4.0" name=GENERATOR/HEAD

BODY onload=initial()

SCRIPT language=JavaScript!--

if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) 4)

document.write("h1你的浏览器无法执行此程序。/h1此程序在 IE4 以后的版本才能执行!!")

//--/SCRIPT

DIV id=detail style="POSITION: absolute"/DIV

FORM name=CLD

div align="center"

TABLE width="672" align="right" height="259" bordercolordark="#CC9900" border="4" background="l11.gif"

CENTER

center

TBODY

/center/center

TR

TD align=middle vAlign=top width="170" height="255"

div align="center"

center

TABLE BORDER=1 COLSPAN=2 width="221"

CENTER

centerFONT size=2

style="FONT-SIZE: 9pt"

td width="209"

p align="center"font style="font-size:10.8pt" color=RED本地计算机时间:/FONT/FONTBRFONT color=#000080 face=ARIAL

id=Clock size=3 align="center"/FONT

P!--时区 *表示自动调整为日光节约时间--

/center

/CENTER

/TABLE

/center

/div

div align="center"

center

table border=1 height="1" width="16"

td height="1" width="255"

table width="212" height="1"CENTER

center

FONT id=tSave

style="COLOR: red; FONT-FAMILY: Wingdings; FONT

java中阴历的表示方法?

class MyChinaDate

{

int m;

String[] month={"一","二","三","四","五","六","七","八","九","十","十一","十二"};

String[] day={"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","廿十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};

public void getmonth(int n)

{

m=n;

if(m=1m=12)

{

switch(m)

{

case 1:System.out.print("正月");break;

case 12:System.out.print("腊月");break;

default:System.out.print(month[m-1]+"月");

}

}

}

public void getday(int n)

{

m=n;

if(m=1m=30)

{

System.out.println(day[m-1]);

}

}

}

public class MyTest

{

public static void main(String[] args)

{

MyChinaDate t=new MyChinaDate();

t.getmonth(1);

t.getday(6);

t.getmonth(8);

t.getday(22);

t.getmonth(12);

t.getday(30);

t.getmonth(13);

t.getday(31);

}

}

java万年历阴阳历转换

package test;

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, 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

};

// Array iLunarLeapMonthTable preserves the lunar calendar leap month from 1901 to 2050,

// if it is 0 express not to have , every byte was stored for two years

private static final char[] 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

};

// Array iSolarLunarTable stored the offset days

// in New Year of solar calendar and lunar calendar from 1901 to 2050;

private static final char[] 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

};

static boolean bIsSolarLeapYear(int iYear) {

return ((iYear % 4 == 0) (iYear % 100 != 0) || iYear % 400 == 0);

}

// The days in the month of solar calendar

static int iGetSYearMonthDays(int iYear, int iMonth) {

if ((iMonth == 1) || (iMonth == 3) || (iMonth == 5) || (iMonth == 7) || (iMonth == 8) || (iMonth == 10) || (iMonth == 12))

return 31;

else if ((iMonth == 4) || (iMonth == 6) || (iMonth == 9) || (iMonth == 11))

return 30;

else if (iMonth == 2) {

if (bIsSolarLeapYear(iYear))

return 29;

else

return 28;

} else

return 0;

}

// The offset days from New Year and the day when point out in solar calendar

static int iGetSNewYearOffsetDays(int iYear, int iMonth, int iDay) {

int iOffsetDays = 0;

for (int i = 1; i iMonth; i++) {

iOffsetDays += iGetSYearMonthDays(iYear, i);

}

iOffsetDays += iDay - 1;

return iOffsetDays;

}

static int iGetLLeapMonth(int iYear) {

char iMonth = iLunarLeapMonthTable[(iYear - 1901) / 2];

if (iYear % 2 == 0)

return (iMonth 0x0f);

else

return (iMonth 0xf0) 4;

}

static int iGetLMonthDays(int iYear, int iMonth) {

int iLeapMonth = iGetLLeapMonth(iYear);

if ((iMonth 12) (iMonth - 12 != iLeapMonth) || (iMonth 0)) {

System.out.println("Wrong month, ^_^ , i think you are want a -1, go to death!");

return -1;

}

if (iMonth - 12 == iLeapMonth) {

if ((iLunarMonthDaysTable[iYear - 1901] (0x8000 iLeapMonth)) == 0)

return 29;

else

return 30;

}

if ((iLeapMonth 0) (iMonth iLeapMonth))

iMonth++;

if ((iLunarMonthDaysTable[iYear - 1901] (0x8000 (iMonth - 1))) == 0)

return 29;

else

return 30;

}

// Days in this year of lunar calendar

static int iGetLYearDays(int iYear) {

int iYearDays = 0;

int iLeapMonth = iGetLLeapMonth(iYear);

for (int i = 1; i 13; i++)

iYearDays += iGetLMonthDays(iYear, i);

if (iLeapMonth 0)

iYearDays += iGetLMonthDays(iYear, iLeapMonth + 12);

return iYearDays;

}

static int iGetLNewYearOffsetDays(int iYear, int iMonth, int iDay) {

int iOffsetDays = 0;

int iLeapMonth = iGetLLeapMonth(iYear);

if ((iLeapMonth 0) (iLeapMonth == iMonth - 12)) {

iMonth = iLeapMonth;

iOffsetDays += iGetLMonthDays(iYear, iMonth);

}

for (int i = 1; i iMonth; i++) {

iOffsetDays += iGetLMonthDays(iYear, i);

if (i == iLeapMonth)

iOffsetDays += iGetLMonthDays(iYear, iLeapMonth + 12);

}

iOffsetDays += iDay - 1;

return iOffsetDays;

}

// The solar calendar is turned into the lunar calendar

static String sCalendarSolarToLundar(int iYear, int iMonth, int iDay) {

int iLDay, iLMonth, iLYear;

int iOffsetDays = iGetSNewYearOffsetDays(iYear, iMonth, iDay);

int iLeapMonth = iGetLLeapMonth(iYear);

if (iOffsetDays iSolarLunarOffsetTable[iYear - 1901]) {

iLYear = iYear - 1;

iOffsetDays = iSolarLunarOffsetTable[iYear - 1901] - iOffsetDays;

iLDay = iOffsetDays;

for (iLMonth = 12; iOffsetDays iGetLMonthDays(iLYear, iLMonth); iLMonth--) {

iLDay = iOffsetDays;

iOffsetDays -= iGetLMonthDays(iLYear, iLMonth);

}

if (0 == iLDay)

iLDay = 1;

else

iLDay = iGetLMonthDays(iLYear, iLMonth) - iOffsetDays + 1;

} else {

iLYear = iYear;

iOffsetDays -= iSolarLunarOffsetTable[iYear - 1901];

iLDay = iOffsetDays + 1;

for (iLMonth = 1; iOffsetDays = 0; iLMonth++) {

iLDay = iOffsetDays + 1;

iOffsetDays -= iGetLMonthDays(iLYear, iLMonth);

if ((iLeapMonth == iLMonth) (iOffsetDays 0)) {

iLDay = iOffsetDays;

iOffsetDays -= iGetLMonthDays(iLYear, iLMonth + 12);

if (iOffsetDays = 0) {

iLMonth += 12 + 1;

break;

}

}

}

iLMonth--;

}

return "" + iLYear + (iLMonth 9 ? "" + iLMonth : "0" + iLMonth) + (iLDay 9 ? "" + iLDay : "0" + iLDay);

}

// The lunar calendar is turned into the Solar calendar

static String sCalendarLundarToSolar(int iYear, int iMonth, int iDay) {

int iSYear, iSMonth, iSDay;

int iOffsetDays = iGetLNewYearOffsetDays(iYear, iMonth, iDay) + iSolarLunarOffsetTable[iYear - 1901];

int iYearDays = bIsSolarLeapYear(iYear) ? 366 : 365;

if (iOffsetDays = iYearDays) {

iSYear = iYear + 1;

iOffsetDays -= iYearDays;

} else {

iSYear = iYear;

}

iSDay = iOffsetDays + 1;

for (iSMonth = 1; iOffsetDays = 0; iSMonth++) {

iSDay = iOffsetDays + 1;

iOffsetDays -= iGetSYearMonthDays(iSYear, iSMonth);

}

iSMonth--;

return "" + iSYear + (iSMonth 9 ? iSMonth + "" : "0" + iSMonth) + (iSDay 9 ? iSDay + "" : "0" + iSDay);

}

}

// 自定义星期类

class Week {

int iWeek;

private String sWeek[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };

public Week() {

iWeek = 0;

}

public Week(int w) {

if ((w 6) || (w 0)) {

System.out.println("Week out of range, I think you want Sunday");

this.iWeek = 0;

} else

this.iWeek = w;

}

public String toString() {

return sWeek[iWeek];

}

}

// 自定义日期类

class MyDate {

public int iYear;

public int iMonth;

public int iDay;

private static int checkYear(int iYear) {

if ((iYear 1901) (iYear 2050))

return iYear;

else {

System.out.println("The Year out of range, I think you want 1981");

return 1981;

}

}

public MyDate(int iYear, int iMonth, int iDay) {

this.iYear = checkYear(iYear);

this.iMonth = iMonth;

this.iDay = iDay;

}

public MyDate(int iYear, int iMonth) {

this.iYear = checkYear(iYear);

this.iMonth = iMonth;

this.iDay = 1;

}

public MyDate(int iYear) {

this.iYear = checkYear(iYear);

this.iMonth = 1;

this.iDay = 1;

}

public MyDate() {

this.iYear = 1981;

this.iMonth = 1;

this.iDay = 1;

}

public String toString() {

return "" + this.iYear + (this.iMonth 9 ? "" + this.iMonth : "0" + this.iMonth)

+ (this.iDay 9 ? "" + this.iDay : "0" + this.iDay);

}

public boolean equals(MyDate md) {

return ((md.iDay == this.iDay) (md.iMonth == this.iMonth) (md.iYear == this.iYear));

}

}

// 阳历日期类,继承自定义日期

class SolarDate extends MyDate {

private static int checkMonth(int iMonth) {

if (iMonth 12) {

System.out.println("Month out of range, I think you want 12 ");

return 12;

} else if (iMonth 1) {

System.out.println("Month out of range, I think you want 1 ");

return 1;

} else

return iMonth;

}

private static int checkDay(int iYear, int iMonth, int iDay) {

int iMonthDays = ChineseCalendar.iGetSYearMonthDays(iYear, iMonth);

if (iDay iMonthDays) {

System.out.println("Day out of range, I think you want " + iMonthDays + " ");

return iMonthDays;

} else if (iDay 1) {

System.out.println("Day out of range, I think you want 1 ");

return 1;

} else

return iDay;

}

public SolarDate(int iYear, int iMonth, int iDay) {

super(iYear);

this.iMonth = checkMonth(iMonth);

this.iDay = checkDay(this.iYear, this.iMonth, iDay);

}

public SolarDate(int iYear, int iMonth) {

super(iYear);

this.iMonth = checkMonth(iMonth);

}

public SolarDate(int iYear) {

super(iYear);

}

public SolarDate() {

super();

}

public String toString() {

return "" + this.iYear + (this.iMonth 9 ? "-" + this.iMonth : "-0" + this.iMonth)

+ (this.iDay 9 ? "-" + this.iDay : "-0" + this.iDay);

}

public Week toWeek() {

int iOffsetDays = 0;

for (int i = 1901; i iYear; i++) {

if (ChineseCalendar.bIsSolarLeapYear(i))

iOffsetDays += 366;

else

iOffsetDays += 365;

}

iOffsetDays += ChineseCalendar.iGetSNewYearOffsetDays(iYear, iMonth, iDay);

return new Week((iOffsetDays + 2) % 7);

}

public LunarDate toLunarDate() {

int iYear, iMonth, iDay, iDate;

LunarDate ld;

iDate = Integer.parseInt(ChineseCalendar.sCalendarSolarToLundar(this.iYear, this.iMonth, this.iDay));

iYear = iDate / 10000;

iMonth = iDate % 10000 / 100;

iDay = iDate % 100;

ld = new LunarDate(iYear, iMonth, iDay);

return ld;

}

}

// 阴历日期类,继承自定义日期类

class LunarDate extends MyDate {

private String sChineseNum[] = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };

private static int checkMonth(int iYear, int iMonth) {

if ((iMonth 12) (iMonth == ChineseCalendar.iGetLLeapMonth(iYear) + 12)) {

return iMonth;

} else if (iMonth 12) {

System.out.println("Month out of range, I think you want 12 ");

return 12;

} else if (iMonth 1) {

System.out.println("Month out of range, I think you want 1 ");

return 1;

} else

return iMonth;

}

private static int checkDay(int iYear, int iMonth, int iDay) {

int iMonthDays = ChineseCalendar.iGetLMonthDays(iYear, iMonth);

if (iDay iMonthDays) {

System.out.println("Day out of range, I think you want " + iMonthDays + " ");

return iMonthDays;

} else if (iDay 1) {

System.out.println("Day out of range, I think you want 1 ");

return 1;

} else

return iDay;

}

public LunarDate(int iYear, int iMonth, int iDay) {

super(iYear);

this.iMonth = checkMonth(this.iYear, iMonth);

this.iDay = checkDay(this.iYear, this.iMonth, iDay);

}

public LunarDate(int iYear, int iMonth) {

super(iYear);

this.iMonth = checkMonth(this.iYear, iMonth);

}

public LunarDate(int iYear) {

super(iYear);

}

public LunarDate() {

super();

}

public String toString() {

String sCalendar = "农历";

sCalendar += sChineseNum[iYear / 1000] + sChineseNum[iYear % 1000 / 100] + sChineseNum[iYear % 100 / 10]

+ sChineseNum[iYear % 10] + "(" + toChineseEra() + ")年";

if (iMonth 12) {

iMonth -= 12;

sCalendar += "闰";

}

if (iMonth == 12)

sCalendar += "腊月";

else if (iMonth == 11)

sCalendar += "冬月";

else if (iMonth == 1)

sCalendar += "正月";

else

sCalendar += sChineseNum[iMonth] + "月";

if (iDay 29)

sCalendar += "三十";

else if (iDay 20)

sCalendar += "二十" + sChineseNum[iDay % 20];

else if (iDay == 20)

sCalendar += "二十";

else if (iDay 10)

sCalendar += "十" + sChineseNum[iDay % 10];

else

sCalendar += "初" + sChineseNum[iDay];

return sCalendar;

}

public CnWeek toWeek() {

int iOffsetDays = 0;

for (int i = 1901; i iYear; i++)

iOffsetDays += ChineseCalendar.iGetLYearDays(i);

iOffsetDays += ChineseCalendar.iGetLNewYearOffsetDays(iYear, iMonth, iDay);

return new CnWeek((iOffsetDays + 2) % 7);

}

public ChineseEra toChineseEra() {

return new ChineseEra(iYear);

}

public SolarDate toSolarDate() {

int iYear, iMonth, iDay, iDate;

SolarDate sd;

iDate = Integer.parseInt(ChineseCalendar.sCalendarLundarToSolar(this.iYear, this.iMonth, this.iDay));

iYear = iDate / 10000;

iMonth = iDate % 10000 / 100;

iDay = iDate % 100;

sd = new SolarDate(iYear, iMonth, iDay);

return sd;

}

}

class CnWeek extends Week {

private String sCnWeek[] = { "日", "一", "二", "三", "四", "五", "六" };

public CnWeek() {

super();

}

public CnWeek(int iWeek) {

super(iWeek);

}

public String toString() {

return "星期" + sCnWeek[this.iWeek];

}

}

class ChineseEra {

int iYear;

String[] sHeavenlyStems = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };

String[] sEarthlyBranches = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };

public ChineseEra() {

int iYear = 1981;

}

public ChineseEra(int iYear) {

if ((iYear 2050) (iYear 1901))

this.iYear = iYear;

else

this.iYear = 1981;

}

public String toString() {

int temp;

temp = Math.abs(iYear - 1924);

return sHeavenlyStems[temp % 10] + sEarthlyBranches[temp % 12];

}

}


新闻名称:农历代码java java简单日历代码
标题来源:http://cdxtjz.cn/article/doeicoi.html

其他资讯