4

NetBeans IDE 7.2 を使用しています。私は2つの別々のクラスを持っていnewDateTest.javaますnewDateMethod.java.現在、メソッドクラスを使用して、テストクラスで使用したユーザー入力からの日付を検証しています.

これまでのところ、テストクラスには次のものがあります。

try
{
    Prompt ="please enter a date in the format dd-mm-yyyy";
    System.out.println(Prompt);
    String inputDate = in.next();
    isValid = newDateMethod.validDate(input, input, input);
    if (isValid){
        System.out.println("VALID DATE");

    } else {
        System.out.println("INVALID DATE");

    }

}catch (ArrayIndexOutOfBoundsException oob) {
    System.out.println(oob);
}
}

ただし、私は Java にかなり慣れていないため、メソッド クラスで日付を検証する方法がわかりません。

誰でも解決策にたどり着くことができますか?私が使用するように教えられたのは Date Formmater ですが、これがここで適切かどうかはわかりませんか? もしそうなら、それを使用する方法がわかりません

4

7 に答える 7

11

このような:

Date date = null;
String inputDate = "07-01-2013";
try {
    DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
    formatter.setLenient(false);
    date = formatter.parse(inputDate);
} catch (ParseException e) { 
    e.printStackTrace();
}

2021 年 7 月 13 日に更新:

以下の Ole VV のコメントに心から同意します。すべての Java および Kotlin 開発者は、java.time パッケージを優先する必要があります。

時間が許せば、より現代的な例を追加します。

于 2013-01-07T10:46:31.110 に答える
3

を見てSimpleDateFormat.parse(...)、try-catch で囲むことを忘れないでください。

于 2013-01-07T10:46:54.283 に答える
1

パフォーマンスのオーバーヘッドが小さい傾向がある例外に頼るのではなく、次のように Apache commons routines パッケージのDateValidatorを使用することもできます。

if (DateValidator.getInstance().validate(inputDate, "dd-MM-yyyy") != null) {
  // Date is valid
}
else {
  // Date is invalid
}

小さな免責事項ですが、検証メソッドの実装を見ていないため、たとえば SimpleDateFormat を使用しているかどうかはわかりません...

于 2013-01-07T11:14:55.600 に答える
1

そのための標準の JDK クラスはSimpleDateFormatです。

DateFormat fmt = new SimpleDateFormat("yourformathere");

// use fmt.parse() to check for validity

または、 Joda Timeのを使用することをお勧めしDateTimeFormatます。

于 2013-01-07T10:49:03.647 に答える
0

メソッドを使用する必要がありますSimpleDateFormat.parse(String)。渡された日付の形式が間違っている場合、例外がスローされ、その場合は false が返されます。

public boolean validateDate(String date) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    try {
        sdf.parse(date);
        return true;
    }
    catch(ParseException ex) {
        return false;
    }
}
于 2013-01-07T10:48:39.403 に答える