1

私はSpringプロジェクトに取り組んでおり、アップロード日でドキュメントを検索する必要があります. したがって、DAO レイヤーのメソッドのパラメーターとして日付を渡すと、次のように受信されますThu Jun 06 00:03:49 WEST 2013。そして、それを次のようにフォーマットしたい:2013-06-06

このコードを使用してそれを行いましたが06/06/13、DateFormat の他の定数 (DateFormat.MEDIUM など) が返され、待っているものが返されません。

DateFormat shortDf = DateFormat.getDateInstance(DateFormat.SHORT);       
System.out.println(shortDf.format(new Date())); // return 06/06/13 it's short

私もそのような SimpleDateFormat を試しました:

public static Date parseDate(String date, String format)throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(format,Locale.ENGLISH);
return formatter.parse(date);
}

しかし、まだ解析例外をスローしています:

java.text.ParseException: Unparseable date: "Thu Jun 06 00:23:33 WEST 2013"
at java.text.DateFormat.parse(DateFormat.java:337)
at TestApp.main(TestApp.java:20)
4

4 に答える 4

2

これはあなたの場合にうまくいくはずです:

    DateFormat sourceFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
    DateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd");

    try {
        Date date = sourceFormat.parse("Thu Jun 06 00:23:33 WEST 2013");
        String formatted = targetFormat.format(date);
        System.out.println(formatted);
    } catch (ParseException e) {
        e.printStackTrace();
    }

まず、日付を正しい形式とロケールで解析する必要があります (適切なものに変更Locale.USしてください)。取得していた例外は、解析形式が正しくないか、ロケールが欠落していることが原因です。

EEE MMM dd HH:mm:ss zzz  yyyy
Thu Jun 06 00:23:33 WEST 2013

次に、このフォーマット文字列を使用して結果をフォーマットします。

yyyy-MM-dd
2013-06-06

(ドキュメント)

于 2013-06-05T23:40:28.803 に答える