一,Java实现万年历的代码:
package calendar;
import java.util.Scanner;//日历项目
public class RiLi{
public static void main(String[] args){
Scanner A=new Scanner(System.in);
System.out.println("请输入年份:");
int year=A.nextInt();
System.out.println("请输入月份:");
int month=A.nextInt();
int sum=0;
for(int i=1900;i
if(i%4==0&&i%100!=0||i%400==0){
sum=sum+366;
}else{
sum=sum+365;
}
}
for(int i=1;i
if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum=sum+29;}
else{
sum=sum+28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum=sum+1;
int wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
int f=0;
if(month==4||month==6||month==9||month==11){
f=30;}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){f=31;}
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){f=29;}
else{f=28;}
}
for(int i=1;i<=f;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
二.一个Java万年历,比较简单的那种,显示年月日、星期几、当前日期是第几周、显示闰年、打印万年历等,还可显示当前日期是一年中的第几天,指定日期是星期几等,采用了基姆拉尔森计算公式 ,W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 ,在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
public class myCalendar {
//以下程序段是用来计算输入日期为该年的第几天的
public static int cptDay(int year , int month , int day){
byte dayadd[]={1,-2,1,0,1,0,1,1,0,1,0,1}; //用来存储每个月天数和30的差值
int daycount = 0; //这是天数daycount计数器,初始化为0
for(int i=0; i
daycount+=(30+dayadd[i]);
daycount+=day;
return (month>2)?daycount+isLeap(year):daycount;
}
//闰年判定程序段,闰年返回1,平年返回0
public static int isLeap(int year){
if((year%400==0)||((year%4==0)&&(year%100!=0)))
return 1;
return 0;
}
//计算输入日期是星期几
//采用了基姆拉尔森计算公式
//W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
//在公式中d表示日期中的日数,m表示月份数,y表示年数。
//注意:在公式中有个与其他公式不同的地方:
//把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
public static int getWeek(int year,int month,int day){
if(month<3)
{ month+=12; year--;}
return (day&#