import java.util.Scanner; public class work05 { //闰年 final static int LEAP_YEAR=366; //平年 final static int COMMEN_YEAR=365; //月份数组 ,默认是平年,具体操作在下方代码71行 static int days[]={31,28,31,30,31,30,31,31,30,31,30,31}; public static void main(String[] args) { //设计方法,计算两个日期之间相差多少天。两个日期的年月日由参数控制。 //定义控制台输入对象 Scanner scan=new Scanner(System.in); //定义第一个的年月日,用来构造第一个date对象 int year1,month1,day1; //定义第二个的年月日,用来构造第二个date对象 int year2,month2,day2; //str1,str2用来接收输入 String str1; String str2; System.out.println("请输入第一个日期(按照XXXX.XX.XX的格式)"); str1=scan.nextLine(); //利用字符串分割将输入的日期划分为年月日 String []date1=str1.split("\\."); //将字符串转化为整型 year1=Integer.parseInt(date1[0]); month1=Integer.parseInt(date1[1]); day1=Integer.parseInt(date1[2]); // System.out.println(year1+","+month1+","+day1); System.out.println("请输入第二个日期(按照XXXX.XX.XX的格式)"); str2=scan.nextLine(); //利用字符串分割将输入的日期划分为年月日 String []date2=str2.split("\\."); //将字符串转化为整型 year2=Integer.parseInt(date2[0]); month2=Integer.parseInt(date2[1]); day2=Integer.parseInt(date2[2]); // System.out.println(year2+","+month2+","+day2); //初始化两个date对象。 Date d1=new Date(year1,month1,day1); Date d2=new Date(year2,month2,day2); //计算从公元前一年一月一日到第一个日期的天数 int sum1=sum_Days(d1); //计算从公元前一年一月一日到第二个日期的天数 int sum2=sum_Days(d2); //两个天数相减即为相差的天数 System.out.println(str1+"跟"+str2+"相差"+(sum1>sum2?sum1-sum2:sum2-sum1)+"天."); } static int sum_Days(Date date){ int sum=0; //计算公元1年一月一日到某年的一月一日的天数 for(int i=1;i<date.getYear();i++){ //如果是闰年,366天 if(i%4==0&&i%100!=0||i%400==0){ sum+=LEAP_YEAR; }else sum+=COMMEN_YEAR; } //计算某年的一月一日到月份的天数 for(int i=0;i<date.getMonth()-1;i++){ sum+=days[i]; } //计算该月的一号到该天的天数 if(date.getMonth()>2&&(date.getYear()%400==0||date.getYear()%4==0&&date.getYear()%100!=0)){ //如果本年是闰年,多加一天 sum+=date.getDay()+1; }else{ sum+=date.getDay(); } return sum; } //定义一个日期类 public static class Date{ int year; int month; int day; //无参构造函数 public Date(){} //带三个参数的构造函数 public Date(int year,int month,int day){ this.year=year; this.month=month; this.day=day; } //get,set方法 public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } } }
设计方法,计算两个日期之间相差多少天。两个日期的年月日由参数控制.
最新推荐文章于 2023-01-05 13:41:13 发布