0

入力日付をdd/MM/yyyy形式の文字列として持っています

今、 yyyy-MM-dd形式の Date オブジェクトに変換したい

現在、私はやっています

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
Date dateObject = null;
  try {
    String date2 = formatter2.format(formatter.parse(date));
    dateObject = formatter2.parse(date2);
  }

入力は: "04/02/2013"

しかし、私の日付オブジェクトは次のようになります --> Mon Feb 04 00:00:00 IST 2013

望ましい出力は次のとおりです: 2013-02-04 (文字列ではなく、日付オブジェクトとして)

4

5 に答える 5

3

日付には特定の出力形式はありません。最初の日付を解析すると、それが日付になります。保存するだけで、目的の形式で出力する必要がある場合は、2 番目のSimpleDateFormat.

編集

「保存する」とは、目的の文字列形式で表現する必要があるまで参照を保持することを意味します。

于 2013-04-08T09:43:59.017 に答える
1

ここで間違った質問をしていると思います。コメントで述べたように、データベースのクエリにはこの文字列フォーマットが必要です。したがって、JDBC は java.sql.Date オブジェクトで動作するため、それに厳密に従い、java.util.Date オブジェクトを JDBC 管理型に変換して直接使用します (フォーマットを気にする必要はありません)。

次のようなことを試してください:

String stmt = "select field from table where dateColumn = ?";
PreparedStatement st = connection.prepareStatement(stmt);
st.setDate(1, new java.sql.Date (yourJavaUtilDateObj);
ResultSet rs = st.executeQuery();

そこにあるすべてのJDBCドライバーで動作するはずです。

于 2013-04-08T09:49:03.533 に答える
1

で書式設定された日付を既に取得していますdate2。それを再度解析する必要はありません。

String date2 = formatter2.format(formatter.parse(date));
//dateObject = formatter2.parse(date2); // Not needed

System.out.println(date2);
于 2013-04-08T09:43:59.140 に答える
0

これは私にとってはうまくいきます:

public Timestamp convertStringToTimeStamp(String dateinString){
        final String OLD_FORMAT = "dd/mm/yyyy";
        final String NEW_FORMAT = "yyyy-mm-dd";

        String newDateString;

        SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
        Date d = null;
        try {
            d = sdf.parse(dateinString);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdf.applyPattern(NEW_FORMAT);
        newDateString = sdf.format(d);

        return Timestamp.valueOf(newDateString+ " 00:00:00.00");
    }
于 2013-10-09T03:10:33.257 に答える