これが私の問題です:ユーザーに次のような日付を入力させます: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です。
助けてください!大変感謝いたします。
Java.sql.Date
時間がありません。
使用する Java.sql.Timestamp
代わりに。
私はこの質問に答えるのが非常に遅いかもしれませんが、それは役に立つかもしれないと思います。
'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フィールドに格納されます。
この目的のために、utilDate.getTime()
を使用して、このDateオブジェクトで表される1970年1月1日00:00:00 GMT以降のミリ秒数を返します。
_Java.sql.Date
_のみが必要な場合は、次のことができます。
_public static Java.sql.Date convertToSqlDate(Date utilDate){
return new Java.sql.Date(utilDate.getTime());
}
_
あなたがリストしたまさにその理由のために、私はJavaの標準のDateクラスの使用を完全に諦めました。
Joda Time をしばらく使っていて、ずっと簡単だとわかりました。