在Java中检查日期是否存在

时间:2010-12-23 07:06:29

标签: java date

Java中是否有任何预定义的类,如果我传递一个日期,如果它是一个有效的日期,它应该返回?例如,如果我在一年的2月31日通过它,那么它应该返回false,如果日期存在,那么它应该返回true,对于任何一年的任何日期。

而且我还想要一种方法来告诉我这个特定日期的工作日。我参加了日历课,但我没有得到如何做到这一点。

3 个答案:

答案 0 :(得分:16)

How to Validate a Date in Java

private static boolean isValidDate(String input) {
        String formatString = "MM/dd/yyyy";

        try {
            SimpleDateFormat format = new SimpleDateFormat(formatString);
            format.setLenient(false);
            format.parse(input);
        } catch (ParseException e) {
            return false;
        } catch (IllegalArgumentException e) {
            return false;
        }

        return true;
    }

public static void main(String[] args){
        System.out.println(isValidDate("45/23/234")); // false
        System.out.println(isValidDate("12/12/2111")); // true
    }

答案 1 :(得分:6)

关键是调用DateFormat#isLenient(false),以便在解析过程中不会滚动超出范围的值:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.parse("2010-02-31"); //=> Ok, rolls to "Wed Mar 03 00:00:00 PST 2010".
format.setLenient(false);
format.parse("2010-02-31"); //=> Throws ParseException "Unparseable date".

当然,您可以使用您需要的任何实际日期格式。

答案 2 :(得分:-1)

您可以使用此功能从日期

获取工作日
    Calendar currentDate = Calendar.getInstance(); //or your specified date.
    int weekDay = currentDate.get(Calendar.DAY_OF_WEEK);