9

これが私の問題です:ユーザーに次のような日付を入力させます:2012-12-24(文字列)時間をその文字列に連結し、java.util.Dateに変換します私のコードは次のようになります:

String tempstartdate = startdte;  //startdte is the string value from a txtfield
       tempstartdate += " 00:01:00";
       String tempenddate = startdte;
       tempenddate += " 23:59:59";

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");               
       java.util.Date validstartdte = null;
        java.util.Date validenddte = null;

validstartdte = df.parse(tempstartdate);  //validstartdte is a util.Date (and works)
validenddte = df.parse(tempenddate);

私の問題は、そのutil.Dateを取得して、それをsql.Dateにしたい場合です。

java.sql.Date sqlstartDate = new java.sql.Date(validstartdte.getTime());
java.sql.Date sqlendDate = new java.sql.Date(validenddte.getTime());

割り当てたタイムスタンプは表示されず、yyyy-MM-ddの形式(2012-12-23など)でのみ日付が返されます。

どうして!?私はとてもイライラしています。
注:ブレークポイントを使用すると、sqlendDateを展開して、cdateという値が返されることがわかりました。2012-12-12T23:59:59.000-0500使用しているデータベースはPostgreSQLです。

助けてください!とても有難い。

4

3 に答える 3

36

java.sql.Date時間がありません。

java.sql.Timestamp代わりに使用してください。

于 2012-12-21T01:06:29.247 に答える
6

私はこの質問に答えるのに非常に遅いかもしれませんが、それは役に立つかもしれないと思います。

'Felipe Fonseca'で述べられているように、私はutildateをsqldateに次のように変換しました。

public static java.sql.Timestamp convertToSqlDateTime(Date utilDate){
    return new java.sql.Timestamp(utilDate.getTime());
}

通常、java.sql.Date戻り値は日付値と時刻のみが破棄されます。したがって、時間を取得するためにも、java.sql.TimeStampを使用する必要があります。

TimeStampミリ秒の時間値を使用してTimestampオブジェクトを構築します。整数秒は、基になる日付値に格納されます。分数秒は、Timestampオブジェクトのnanosフィールドに格納されます。

この目的のために、は、このDateオブジェクトによって表される1970年1月1日00:00:00GMTからのミリ秒数utilDate.getTime()を返すために使用されます。

のみが必要な場合はjava.sql.Date、次のことができます。

public static java.sql.Date convertToSqlDate(Date utilDate){
    return new java.sql.Date(utilDate.getTime());
}
于 2014-06-11T19:09:27.213 に答える
1

あなたが挙げた理由から、私はJavaの標準のDateクラスの使用を完全に諦めました。

私はしばらくの間JodaTimeを使用してきましたが、はるかに簡単であることがわかりました。

于 2012-12-21T01:05:16.130 に答える