📄 mycalendar.java
字号:
import java.io.*;
import java.text.*;
import java.util.*;
import java.sql.*;
public class MyCalendar{
String m_nlYear;
String m_nlMonth;
String m_nlDay;
int m_glYear;
int m_glMonth;
int m_glDay;
int m_maxDay;
String m_glWeek;
// int m_glMinutes;
// int m_glHours;
// int m_glSecond;
MyCalendar()
{
m_nlYear="";
m_nlMonth="";
m_nlDay="";
m_glWeek="";
}
//得到公历年、月、日
// public void getDate(int nYear , int nMonth, int nDay ,int nHours,int nMinutes,int nSecond){
public void getDate(int nYear , int nMonth, int nDay ){
m_glYear = nYear;
m_glMonth = nMonth ;
m_glDay = nDay;
if ((nYear<1900)||(nYear>2050))
return;
// m_glHours = nHours;
// m_glMinutes = nMinutes;
// m_glSecond = nSecond;
}
// public void getNlCalendar(){
int byr=1201,nyr=150,nmth=13;
int[] yearInfo={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};
int[] fest={
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,8,9,8,8,6,
5,7,6,7,7,8,9,9,9,8,8,7,
5,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,6,8,8,8,9,8,8,6,
5,7,6,7,7,8,9,9,9,8,8,7,
5,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,6,8,8,8,9,8,8,6,
5,7,6,7,7,8,9,9,9,8,8,7,
5,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,9,9,8,8,6,
5,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,9,9,8,8,6,
5,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,9,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,9,9,8,8,6,
5,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,8,9,8,8,6,
5,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,7,8,8,8,9,8,8,6,
5,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,6,8,8,8,9,8,8,6,
5,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,6,8,8,8,9,8,8,6,
5,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,6,6,6,6,8,8,8,9,8,8,6,
5,6,5,5,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,6,7,7,8,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,6,7,7,8,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,6,7,7,8,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,6,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,6,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
5,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,8,8,8,9,8,8,6,
4,5,4,5,5,7,7,7,8,7,7,5,
5,5,5,5,5,8,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
5,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
5,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
5,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,6,5,6,6,7,8,8,9,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
4,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,6,5,6,6,7,8,8,8,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
4,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,6,5,6,6,7,8,8,8,8,7,6,
4,5,4,5,5,7,7,7,8,7,7,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,6,7,7,8,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,5,4,5,5,6,7,7,8,7,7,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,6,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,8,7,6,
4,5,4,5,5,6,7,7,8,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,5,4,5,5,6,7,7,8,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,6,6,7,8,8,8,7,7,6,
4,5,4,5,5,6,7,7,8,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,5,4,5,5,6,7,7,8,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,5,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,5,4,5,5,6,7,7,8,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,5,4,5,5,6,7,7,7,7,6,5,
3,5,4,5,5,7,7,7,8,7,7,5,
4,5,4,5,5,7,7,7,8,7,7,5,
4,6,5,5,6,7,7,8,8,7,7,6,
4,5,4,5,5,6,7,7,7,7,6,5,
3,5,4,5,5,6,7,7,8,7,7,5};
MyDate solarFirstDate=new MyDate(1900,1,31,0,3,0);
MyDate LunarFirstDate=new MyDate(1900,1,1,0,3,0);
MyDate solar=new MyDate(0,0,0,0,0,0);
MyDate lunar=new MyDate(0,0,0,0,0,0);
MyDate lunar2=new MyDate(0,0,0,0,0,0);
int[] ymonth={ 0, 1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,118,
120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149 };
int[] yday={0 , 1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,118,
120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149 };
int[] mday={0 , 1 , 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
int[] moon={29,30};
int[] daysInSolarMonth={0,31,28,31,30,31,30,31,31,30,31,30,31};
String[] monthGB={"正","二","三","四","五","六","七","八","九","十","十一","腊"};
String[] dayGB={"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","廿","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","卅"};
/* public String report(){
String answer="";
//if (lunar.d ==1) answer=""+(lunar .l==1?"润":"")+monthGB[lunar .m-1]+"月";
//else answer=dayGB[lunar .d-1];
return answer;
}*/
public String cday(int d){
String answer="";
//if (d==1) answer=""+(lunar.l==1?"润":"")+monthGB[lunar.m-1]+"月";
// else
answer=dayGB[d-1];
return answer;
}
public String cmonth(int d){
String answer="";
d = 1;
answer=""+(lunar.l==1?"润":"")+monthGB[lunar.m-1]+"月";
// else
return answer;
}
public boolean LeapYear(int y){
return (((y%4)==0) && ((y%100)!=0) || ((y%400)==0));
}
public double solar2Day1(MyDate d){
int delta,i;
double offset;
delta=d.y-byr;
offset=Math.floor(delta*365)+Math.floor(delta/4)-Math.floor(delta/100)+Math.floor(delta/400);
for(i=1;i<d.m;i++){
offset += daysInSolarMonth[i];
}
if((d.m>2)&&(LeapYear(d.y))) offset++;
offset += d.d-1;
return offset;
}
public double solar2Day(MyDate d){
return (solar2Day1(d)-solar2Day1(solarFirstDate));
}
public int make_yday(){
int year,i,leap,code;
for (year=0;year<nyr;year++){
code=yearInfo[year];
leap=code & 0xf;
yday[year]=0;
if (leap!=0){
i=(code>>16) & 0x1;
yday[year] += moon[i];
}
code >>= 4;
for (i=0;i<nmth-1;i++){
yday[year] += moon[code&0x1];
code >>= 1;
}
ymonth[year]=12;
if (leap!=0) ymonth[year]++;
}
return nyr;
}
public int make_mday(int year){
int i,leapMonth,code;
code=yearInfo[year];
leapMonth=code & 0xf;
code >>= 4;
if (leapMonth==0){
mday[nmth]=0;
for (i=nmth-1;i>=1;i--){
mday[i]=moon[code&0x1];
code >>= 1;
}
}
else{
i=(yearInfo[year] >> 16) & 0x1;
mday[leapMonth+1]=moon[i];
for (i=nmth;i>=1;i--){
if (i==leapMonth+1) i--;
mday[i]=moon[code&0x1];
code >>= 1;
}
}
return leapMonth;
}
public void day2Lunar(double offset,MyDate d){
int i,m,nYear,leapMonth;
boolean yesNo;
nYear=make_yday();
for (i=0;i<nYear&&offset>0;i++) offset-=yday[i];
if (offset<0) offset+=yday[--i];
d.y=i+LunarFirstDate.y;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -