7

日付パターン「yyyy-MM-dd」を使用して入力文字列から日付を解析する必要があり、日付が他の形式である場合はエラーをスローします。

これは、日付を解析する私のコードです。

private void validateDate() throws MyException {
  Date parsedDate;
  String DATE_FORMAT = "yyyy-MM-dd";
  try{
    parsedDate = new SimpleDateFormat(DATE_FORMAT).parse(getMyDate());
    System.out.println(parsedDate);
  } catch (ParseException e) {
    throw new MyException(“Error occurred while processing date:” + getMyDate());
  }

}

myDate に「2011-06-12」のような文字列を入力すると、「Thu Sep 29 00:00:00 EEST 2011」という出力が得られます。

「2011-0612」のような間違った文字列を送信すると、予想どおりエラーが発生します。

まだ 2 つの「ハイフン」がある文字列を渡そうとすると、問題が発生しますが、桁数が間違っています。例:

入力文字列 "2011-06-1211" 結果 "Tue Sep 23 00:00:00 EEST 2014".

入力文字列 "2011-1106-12" 結果 "Mon Feb 12 00:00:00 EET 2103".

文字列日付の入力形式を変更できません。

どうすれば回避できますか?

4

2 に答える 2

10

に電話をかけてみsetLenient(false)ましたSimpleDateFormatか?

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String[] args) throws Exception {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        format.setLenient(false);
        Date date = format.parse("2011-06-1211"); // Throws...
        System.out.println(date);
    }
}

のタイムゾーンとロケールを設定することもお勧めしますSimpleDateFormat。(または、代わりにJoda Timeを使用してください...)

于 2012-05-15T17:49:51.230 に答える