Java实例-输入年月日完成以下判断

完成以下要求
1:判断是否输入正确
2:判断输入的日期为星期几
3:判断输入的日期距离输入的第二个日期有多少天
4:判断输入日期的年龄

代码实现

package com.minrisoft;
import java.lang.String; 
import java.util.Scanner;
public class Demo {
  public static void calcWeek(int a,int b,int c){//判断星期几
        int x = a,y = b,z = c;
        if(b == 1){
            b = 13;
            a =a - 1;
            }
        if(b ==12){
            b = 14;
            a = a - 1; 
        }
        int h = (int) ((c + (26 * (b + 1) / 10) + (a % 100) + ((a % 100) / 4) + ((a / 100) / 4) + 5 * (a / 100)) % 7); 
        switch (h) { 
        case 0: 
        System.out.println(x + "年" + y + "月" + z + "日:星期六"); 
        break; 
        case 1: 
        System.out.println(x + "年" + y + "月" + z + "日:星期天"); 
        break; 
        case 2: 
        System.out.println(x + "年" + y + "月" + z + "日:星期一"); 
        break; 
        case 3: 
        System.out.println(x + "年" + y + "月" + z + "日:星期二"); 
        break; 
        case 4: 
        System.out.println(x + "年" + y + "月" + z + "日:星期三"); 
        break; 
        case 5: 
        System.out.println(x + "年" + y + "月" + z + "日:星期四"); 
        break; 
        case 6: 
        System.out.println(x + "年" + y + "月" + z + "日:星期五"); 
        break; 
       }
    }
  public static boolean leapYear(int y){//判断闰年
        if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
            return true;
        else
            return false;
    }
  public static int countDay(int y, int m, int d){//计算天数
        int month_1[] ={ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        int month_2[] ={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
        int count = 0;
        do {
            count += 365;
            if (leapYear(y) == true)
                count += 1;
        }while((--y)!= 0);
        do{
            if (leapYear(y) == true)
                count += month_1[m-1];
            else
                count += month_2[m-1];
        }while ((--m)!= 0);
        count += d;
        return count;
}
  public static void Ture_or_False(int x,int y,int z){//判断输入的日期是否正确
      if (y >= 1 && y <= 12 && z >= 1 && z <= 31){
            if (y == 4 || y == 6 || y == 9 || y == 11){//当月份为4,6,9,11时
                if (z > 30){
                    System.out.println("输入错误");
                    System.out.println(">-----------------------------<");
                    System.exit(0);
                }
            }
            if (y == 2){//当月份为2时
                if (leapYear(y) == true){
                    if (z > 29){
                        System.out.println("输入错误");
                        System.out.println(">-----------------------------<");
                        System.exit(0);
                    }
                }
                else{
                    if (z > 28){
                        System.out.println("输入错误");
                        System.out.println(">-----------------------------<");
                        System.exit(0);
                    }
                }
            }
        }
        else{
            System.out.println("输入错误");
            System.out.println(">-----------------------------<");
            System.exit(0);
        } 
        System.out.println(x + "年" + y + "月" + z + "日:输入正确");
  }
  public static void sumday(int y1,int y2,int x,int y,int z,int i,int j,int k){//判断输入的日期距离某天(输入的第二个日期)的天数
       if (y1 == y2)
            System.out.println(x + "年" + y + "月" + z + "日:处于今天");
        if (y1 < y2)
            System.out.println(x + "年" + y + "月" + z + "日距离"+i + "年" + j + "月" + k + "有" + (y2 - y1) + "天");
        if (y1 > y2){
            System.out.println(x + "年" + y + "月" + z + "日距离"+i + "年" + j + "月" + k + "有" + (y1 - y2) + "天");
            }  
  }
  public static void ages(int y1,int y2,int x,int y,int z){//判断年龄
        if (y1 > y2){
            System.out.println(x + "年" + y + "月" + z + "日:没有出生");
            }
           else{
                int a = 2017 - x;
                if (y > 4 || (x != 2017 && y == 4 && z > 10))
                    a -= 1;
                System.out.println(x + "年" + y +"月" +z +"日:今年"+ a + "岁");
            }
  }
  public static void main(String [] args){
      Scanner sc = new Scanner(System.in);
        System.out.print("请输入第一个日期(格式:yymmdd):");
        String y_m_d_1 = sc.nextLine();
        System.out.println("请输入第二个日期(格式:yymmdd)");
        System.out.print("注意:保证在第一次输入的日期之后:");
        String y_m_d_2 = sc.nextLine();
        sc.close();
        //String 转 int
        int x =Integer.parseInt(y_m_d_1.substring(0,4));//截取年
        int y =Integer.parseInt(y_m_d_1.substring(4,6));//截取月
        int z =Integer.parseInt(y_m_d_1.substring(6,8));//截取日
        int a =Integer.parseInt(y_m_d_2.substring(0,4));//截取年
        int b =Integer.parseInt(y_m_d_2.substring(4,6));//截取月
        int c =Integer.parseInt(y_m_d_2.substring(6,8));//截取日
        int year_1 = countDay(x,y,z);
        int year_2 = countDay(a,b,c);
         System.out.println(">------------查询结果----------<");
            Ture_or_False(x,y,z);
            calcWeek(x,y,z); 
            sumday(year_1,year_2,x,y,z,a,b,c);
            ages(year_1,year_2,x,y,z);
         System.out.println("|------------------------------|");
  }
} 

你可能感兴趣的:(Java实例-输入年月日完成以下判断)