检查给定日期的有效性

时间:2014-08-11 16:30:46

标签: java

package MyJava10;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;

public class Test2 {


public static void main(String[] args) 
{

    int a,b,c;
    String as,bs,cs;

    System.out.println("enter the date");

    Scanner sc=new Scanner(System.in);
    String s=sc.next();


    as=s.substring(0,2);
    bs=s.substring(3,5);
    cs=s.substring(6);
    a=Integer.valueOf(as);
    b=Integer.valueOf(bs);
    c=Integer.valueOf(cs);

    Calendar cal=new GregorianCalendar();
    cal.setLenient(false);
    cal.set(c, b-1, a);
    System.out.println(cs+'/'+bs+'/'+as);
}
}

如您所见,我想知道某个日期是否有效。我已编码为给定并已设置 cal.setLenient(false);

不幸的是,当我提供无效日期时,不会显示任何错误。

任何形式的帮助都会非常明显。谢谢 :) 对不起,其他人之前已经问过这个问题;如果是这样,提供URL将有很大帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用此功能检查日期有效性:

public static String DATE_FORMAT = "MM/dd/yyyy";

public static boolean isDateValid(String date) {
    try {
        DateFormat df = new SimpleDateFormat(DATE_FORMAT);
        df.setLenient(false);
        df.parse(date);
        return true;
    } catch (ParseException e) {
        return false;
    }
}

您可以根据需要更改DATE_FORMATdocumentation)。然后你的主要是:

public static void main(String[] args) {
    System.out.println("Enter the date:");
    Scanner scanner = new Scanner(System.in);
    String date = scanner.next();

    if (isDateValid(date))
        System.out.println("Valid date");
    else
        System.out.println("Invalid date");

    scanner.close();
}

答案 1 :(得分:0)

如果您这样做,

    Calendar cal=new GregorianCalendar();
    cal.setLenient(false);
    cal.set(2014, 8, 32);
    System.out.println(cal.getTime());

你会得到

Exception in thread "main" java.lang.IllegalArgumentException: DAY_OF_MONTH
    at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2316)
    at java.util.Calendar.updateTime(Calendar.java:2265)
    at java.util.Calendar.getTimeInMillis(Calendar.java:1049)
    at java.util.Calendar.getTime(Calendar.java:1022)
    at Question.main(Question.java:39)