2

使っています

java.util.Date date;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
try {
  date = sdf.parse(inputString);
} catch (ParseException e) {
  e.printStackTrace();
}

ここinputStringで、は形式の文字列dd/MM/yyyyです。

たとえばinputString、が40/02/2013の場合、エラーが発生します。代わりに、parseメソッドは日付2013年3月12日(12/03/2013)を返します。私が間違っているのは何ですか?

4

1 に答える 1

8

Leniencyビットを設定します:

public void setLenient(boolean lenient)

日付/時刻の解析を寛大にするかどうかを指定します。寛大な構文解析では、パーサーはヒューリスティックを使用して、このオブジェクトの形式と正確に一致しない入力を解釈する場合があります。厳密な解析では、入力はこのオブジェクトの形式と一致する必要があります。

次のコード:

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Tester {
    public static void main(String[] argv) {
        java.util.Date date;
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

        // Lenient
        try {
            date = sdf.parse("40/02/2013");
            System.out.println("Lenient date is :                  "+date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // Rigorous
        sdf.setLenient(false);

        try {
            date = sdf.parse("40/02/2013");
            System.out.println("Rigorous date (won't be printed!): "+date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

与える:

Lenient date is :                  Tue Mar 12 00:00:00 IST 2013
java.text.ParseException: Unparseable date: "40/02/2013"
    at java.text.DateFormat.parse(DateFormat.java:357)

ノート

  1. Javaクラスについて疑問がある場合は、クラスのドキュメントを読むことが最初のステップになるはずです。私はあなたの質問に対する答えを知りませんでした。クラスをグーグルで検索し、解析メソッドのリンクをクリックして、「関連項目」の部分に注意しました。あなたは常に最初に検索し、質問の中であなたの発見に言及するべきです
  2. 寛大な日付には、検閲を回避し、子供たちの想像力を刺激するという立派な歴史があります。
于 2013-02-25T10:37:06.903 に答える