如何检查某一天是否在某个日期内有效

时间:2017-10-03 21:54:54

标签: java

我正在为一个类编写程序,该类检查以确保用户输入的日期有效。我已经想出如何写一天到晚。该程序必须检查输入的日期是否为有效日期,包括月份和闰年之间的天数变化。任何输入将不胜感激,谢谢!附:我们只能使用Java中的标准库来实现这一目标。

package com.company;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);
    String date;

    System.out.println("Enter a date (mm/dd/yyyy): ");
    date = kbd.nextLine();


    if (date.length() < 10){
        System.out.println("Too few characters in the date");

    }else if(date.length() < 10){
        System.out.println("Too many characters in the date");
    }else{
        if (Character.toString(date.charAt(2)).equals("/") && Character.toString(date.charAt(5)).equals("/")){
            if (Integer.parseInt(date.substring(0,2)) >= 1 && Integer.parseInt(date.substring(0,2)) <= 12){
                int day = Integer.parseInt(date.substring(3,6));
                if(day < 1){

                    System.out.println("Day is not valid");

                }else{


                }


            }else{
                System.out.println("Month is not valid");
            }

        }else{
            System.out.println("Incorrect format");
        }
    }


    kbd.close();
}

}

2 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么......但我在Eclipse IDE中粘贴你的代码,(它没有用),然后我改变了一些东西,(现在它可以工作)。看看它,看看你的想法。我不像大多数人那样经验丰富,但如果您愿意,我会很乐意提供更多帮助,(如果您想要验证的不仅仅是当天/等)。

输入(对于此代码)的示例是10,23,1997

import java.util.Scanner;
public class test {

public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);
    String date;

    System.out.println("Enter a date (mm/dd/yyyy): ");
    date = kbd.nextLine();

    if (date.length() < 10){ System.out.println("Too few characters in the date"); }

    else if(date.length() < 10){ System.out.println("Too many characters in the date");}

    else
    {
        if (Character.toString(date.charAt(2)).equals("/") && Character.toString(date.charAt(5)).equals("/"))
        {

            if (Integer.parseInt(date.substring(0,1)) >= 1 && Integer.parseInt(date.substring(3,4)) <= 12)
            {
                int day = Integer.parseInt(date.substring(3,4));
                if(day < 1){ System.out.println("Day is not valid"); }
                else{ System.out.println("User inputed Date : "+ date + " is valid."); }
            }

            else{ System.out.println("Month is not valid");  }

        }else{ System.out.println("Incorrect format"); }
    }


    kbd.close();
}
}

答案 1 :(得分:0)

查看DateFormat类(以及SimpleDateFormat等派生类)。它有一个解析方法,可以帮到你。

String strDate = "29/02/2017";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = df.parse(strDate);
if (date != null) {
    // Input is valid
} else {
    // Input not valid
}