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 发布
本文介绍了一种计算两个日期之间相差天数的方法,通过用户输入两个日期,利用Java编程实现日期差的计算,包括闰年的判断和天数累加。
613

被折叠的 条评论
为什么被折叠?



