4

MM/DD/yyyy、M/D/yyyy、またはいくつかの組み合わせの日付を解析する簡単な方法はありますか? つまり、1 桁の日または月の前のゼロはオプションです。

手動で行うには、次を使用できます。

String[] dateFields = dateString.split("/");
int month = Integer.parseInt(dateFields[0]);
int day = Integer.parseInt(dateFields[1]);
int year = Integer.parseInt(dateFields[2]);

そして、次のように検証します。

dateString.matches("\\d\\d?/\\d\\d?/\\d\\d\\d\\d")

これを処理する SimpleDateFormat または JodaTime への呼び出しはありますか?

4

3 に答える 3

11

はい、setLenient を使用します。

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
df.setLenient(true);
System.out.println(df.parse("05/05/1999"));
System.out.println(df.parse("5/5/1999"));
于 2008-10-22T21:31:25.267 に答える
1

「MM/dd/yyyy」を使用する必要があるときに「MM/DD/yyyy」を使用していたようです。大文字のDは「年内の日」、小文字のdは「月内の日」です。

new SimpleDateFormat("MM/dd/yyyy").parse(dateString);

仕事をします。また、「M/d/y」は互換的に機能します。SimpleDateFormat API Docsを詳しく読むと、次のことがわかります。

「解析では、隣接する 2 つのフィールドを分離する必要がない限り、パターン文字の数は無視されます。」

于 2008-10-23T02:35:25.887 に答える