2

I'm using a Java method to convert the date into suitable format:

private Timestamp toTimeStamp(String s) throws java.text.ParseException
    {
        Timestamp ts = null;
        java.util.Date date = null;
        if (s == null || s.trim().isEmpty()) return ts;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
        date = (java.util.Date) sdf.parse(s);
        ts = new Timestamp(date.getTime());

        return ts;

    }

When I tried to execute the form I get this error:

Unparseable date: "30-Jun-12"

I tried to change the the date format but I still get this error. Can you help me to fix it?

4

3 に答える 3

8

2 つの問題があります。

  1. 日付形式のパターンが間違っています。はyyyy-MM-dd hh:mm:ss.S決して一致しません30-Jun-12。が必要dd-MMM-yyです。SimpleDateFormatjavadocも参照してください。
  2. 日/月の名前を解析するときは、日/月の名前で使用されている言語に一致する適切なロケールを指定していることを確認してください。システムのデフォルト ロケールは英語ではないようです。

したがって、これは次のようにする必要があります。

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
Date date = sdf.parse("30-Jun-12");

実際には設計上の問題である3番目の問題はjava.sql.Timestamp、モデル/ビジネスレイヤーのどこでも(および他のSQL固有の日付タイプを)使用しないでください(最初に質問JSFにタグを付けました)。データレイヤーでのみ使用してください。代わりに使用java.util.Dateし、DB に永続化する必要があるときにのみ変換します。

preparedStatement.setTimestamp(1, new Timestamp(date.getTime()));
于 2012-06-21T12:32:33.380 に答える
1

日付を形式で渡している30-Jun-12場合は、形式を使用する必要があります

dd-MMM-yy

SimpleDateFormat

于 2012-06-21T10:09:19.023 に答える
0

Web アプリケーションを開発してブラウザで実行する場合は、ブラウザの設定で適切な言語設定を変更してみてください。国によって日付の形式が異なります。ヨーロッパ諸国と米国では大きな違いがあるため、ブラウザ (Firefox など) で試してください。

Tools => Options => Content => Choose preferable language 

アプリケーションをブラウザーでフォーカスするときは、タスクバーの言語バーに適切な言語が表示されることを確認してください。

Web アプリケーションが該当しない場合: 地域設定と優先言語設定を確認します。

于 2016-04-19T12:33:30.497 に答える