您的位置:首页 > 编程语言 > Java开发

java日历计算

2009-06-24 10:50 281 查看
//yimijava

package p1;

import java.io.*;

public class MainClass{
public static void main(String[] args)
throws IOException{
while(true){
System.out.println("/n请选择你要进行的操作(请输入1-4中人一个数字):/n"
+"1:查看月历;/n"
+"2:查看该日期是星期几;/n"
+"3:查看两个日期相差的天数;/n"
+"4:退出系统;/n");

int choice=0;
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
choice=Integer.parseInt(br.readLine());
}catch(Exception e){}

if(choice==1){//查看月历
Month m=new Month();
}

else if(choice==2){//查看该日期是星期几
Week w=new Week();
}

else if(choice==3){//查看两个日期相差的天数
DateRange d=new DateRange();
}

else if(choice==4){
System.exit(0);// 退出系统
}

else{
System.out.println("您输入的数据有误!!!!");
}
}
}
}

******************************************************************

package p1;
import java.io.*;
import java.util.*;

public class Month{
public Month()
throws IOException{
while(true){
System.out.println("请输入年月:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int year=Integer.parseInt(br.readLine());
int month=Integer.parseInt(br.readLine());

//获得输入的年月
Calendar c=GregorianCalendar.getInstance();
int []day={31,28,31,30,31,30,31,31,30,31,30,31};
c.set(Calendar.YEAR,year);
c.set(Calendar.MONTH,month-1);
//要减1,因为Calendar中的MONTH是按照0开始算起的,也就是说一月到十二月份对应的数字是0~11

System.out.println("------------"+year+"年"+month+"月------------");
System.out.println("SUN MON TUE WED THU FRI SAT");
c.set(Calendar.DATE,1);//从1号开始显示
int first=c.get(Calendar.DAY_OF_WEEK);//该月的第一天是一个星期的第几天
int i;
if((year%4==0 && year%100!=0) || year%400==0)
day[1]=29;//闰年时将二月改为29天
for(i=1;i<first;i++) System.out.print(" ");//空格数为5
for(i=1;i<=day[month-1];i++){
if(i<10) System.out.print(" ");
System.out.print(" "+i);//是数字右对齐
System.out.print(" ");
if(first++%7==0) System.out.println();//到星期六时控行
}

System.out.println("/n/n您还要继续吗??(不区分大小写)/n"
+"Y:Yes/n"
+"N:No/n");
String s=br.readLine();
if(s.equals("N")||s.equals("n")){
break;//结束本程序,返回主程序,即主菜单
}

System.out.println();
}
}
}

****************************************************

package p1;

import java.io.*;
import java.util.*;

public class Week{
public Week()
throws IOException{
while(true){
System.out.println("请输入年月日:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int year=Integer.parseInt(br.readLine());
int month=Integer.parseInt(br.readLine());
int date=Integer.parseInt(br.readLine());

//获得输入的年月日
Calendar c=GregorianCalendar.getInstance();
c.set(Calendar.YEAR,year);
c.set(Calendar.MONTH,month-1);
//要减1,因为Calendar中的MONTH是按照0开始算起的,也就是说一月到十二月份对应的数字是0~11
c.set(Calendar.DATE,date);

//输出星期
String []weeks={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
int first=c.get(Calendar.DAY_OF_WEEK);//该日期是一个星期的第几天
System.out.println(year+"年"+month+"月"+date+"日是"+weeks[first-1]);

System.out.println("/n/n您还要继续吗??(不区分大小写)/n"
+"Y:Yes/n"
+"N:No/n");
String s=br.readLine();
if(s.equals("N")||s.equals("n")){
break;//结束本程序,返回主程序,即主菜单
}
}
}
}

************************************************************

package p1;

import java.io.*;
import java.util.*;

public class DateRange{
public DateRange()
throws IOException{
while(true){
System.out.println("请输入第一个年月日:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int year1=Integer.parseInt(br.readLine());
int month1=Integer.parseInt(br.readLine());
int date1=Integer.parseInt(br.readLine());

System.out.println("请输入第二个年月日:");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int year2=Integer.parseInt(in.readLine());
int month2=Integer.parseInt(in.readLine());
int date2=Integer.parseInt(in.readLine());

//获得第一个日期
Calendar c1=GregorianCalendar.getInstance();
c1.set(Calendar.YEAR,year1);
c1.set(Calendar.MONTH,month1-1);
//要减1,因为Calendar中的MONTH是按照0开始算起的,也就是说一月到十二月份对应的数字是0~11
c1.set(Calendar.DATE,date1);

//获得第二个日期
Calendar c2=GregorianCalendar.getInstance();
c2.set(Calendar.YEAR,year2);
c2.set(Calendar.MONTH,month2-1);
//要减1,因为Calendar中的MONTH是按照0开始算起的,也就是说一月到十二月份对应的数字是0~11
c2.set(Calendar.DATE,date2);

//将Calendar实例转化为Date类
Date d1=c1.getTime();
Date d2=c2.getTime();

long daterange=Math.abs(d1.getTime()-d2.getTime());
//getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
long time=1000*3600*24; //一天的微秒数
System.out.println("两个日期相隔"+daterange/time+"天");

System.out.println("/n/n还要继续吗??/n"
+"Y:Yes/n"
+"N:NO(不区分大小写)/n");
String s=br.readLine();
if(s.equals("N")||s.equals("n")){
break;//结束本程序,返回主程序,即主菜单
}

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: