package Time;
import java.time.Year;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import java.util.stream.Stream;
public class Time {
public static void main(String[] args) {
//创建输入对象
Scanner in = new Scanner(System.in);
//创建数组
int[] arry = new int[3];
int[] arry_T = new int[3];
//给数组赋值
System.out.println("请分别输入年月日并用回车隔开:");
for(int i = 0;i < arry.length;i++){
arry[i] = in.nextInt();
}
//日期合法
isLegal(arry);
while (isLegal(arry) == 0){
System.out.println("输入错误 请重新输入:");
for(int i = 0;i < arry.length;i++){
arry[i] = in.nextInt();
}
}
System.out.println("你输入的是:"+arry[0]+"年"+arry[1]+"月"+arry[2]+"日");
//请输入你的生日
System.out.println("请输入你的生日:");
for(int i = 0;i < arry_T.length;i++){
arry_T[i] = in.nextInt();
}
while (isLegal(arry_T) == 0){
System.out.println("输入错误 请重新输入:");
for(int i = 0; i < arry_T.length;i++){
arry_T[i] = in.nextInt();
}
}
dateInput(arry_T);
}
//判断闰年
public static int isLeap(int year){
//闰年就是能被4整除 但不能被100整除 ,又能被400整除的数
if((year % 4 == 0) &&((year % 100) !=0) || (year % 400) == 0) {
return 1;
}else{
return 0;
}
}
//返回天数
public static int dayslMonth(int year,int month){
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(isLeap(year) == 0){
return 28;
}else{
return 29;
}
default:
System.out.println("输入月份有误");
return 0;
}
}
//用来判断日期合法
public static int isLegal(int date[]){
Scanner in = new Scanner(System.in);
int year = date[0];
int month = date[1];
int day = date[2];
//判断年份
if (year > 0) {
//判断月份
if (month >= 1 && month <= 12) {
//判断天数合法
if (day > 0 && day <= dayslMonth(year, month)) {
System.out.println("全都合法");
return 1;
} else {
System.out.println("天数不合法请重新输入");
}
} else {
System.out.println("月份不合法 请重新输入:");
}
} else {
System.out.println("年份不合法 请重新输入:");
}
return 0;
}
//判断输入日期 并返回天数
public static void dateInput(int date[]){
//获取当前日期
Calendar cal = Calendar.getInstance();
int Timeyear = cal.get(Calendar.YEAR);//获取年
int Timemonth = cal.get(Calendar.MonTH )+1;//获取月
int TimeDay = 0; //今年天数
for(int i = 1;i <= 12 ;i++){
TimeDay += dayslMonth(Timeyear,i);
}
//剩余月份
int Month = 12 - date[1];
int DayCount = 0;
int DayCount1 = date[1]; //月份
int sum = 0;
if(isLegal(date) == 0){
System.out.println("不合法");
}else{
//今年的天数 - 生日天数 == 还有多少天 计算生日日期是今年第几天
while(DayCount1 > 0){
sum += dayslMonth(Timeyear,DayCount1);
DayCount1--;
}
}
System.out.println("距离下一次生日还有:"+(TimeDay - DayCount1)+"天");
}
}