2012-01-22 8 views
2

廃止予定のjava.sql.Dateコンストラクタは、はるかに直感的でした - Date(int year, int month, int day)です。しかし、新しいjava.sql.Date(長い日付)を使用する必要があります。java.sql.Dateを使用して長い値を持つコンストラクタ

実際の長い日付を自分自身で書く方法に関するドキュメントは見つかりません。 java.util.Date().getTime()を使用する以外に、javaでsql日付を構築する他の方法はありますか?

+3

Jon SkeetがJoda Timeに言及する時間は間違いありませんか? –

答えて

3

日付(年、月、日)は、ロケールを無視している理由が理由です。標準のJavaクラスを使用したい場合は、Calendar.getInstanceを標準的に使用し、結果のCalendarの.setメソッドを使用して年、月、日を設定します。しかし、私がStackOverflowの3年間で学んだように、より良い方法はJodaを使うことです。

+0

代わりに、DateFormatを使用してStringを解析してgetTime()を呼び出す方法もあります。 –

+0

さて、私はJoda Timeの瓶をダウンロードしました。ここでのようなJodaの時間とSQLのいくつかのガイドを参照して、http://stackoverflow.com/questions/1071800/how-to-use-jodatime-with-java-sql-timestampに基づいて、私はコンストラクタの使い方を理解しています。 – harryo

+0

しかし、このリンクの例では、JodaTimeからタイムスタンプへの変換のみが提供されています。私がjavaクラスを介してデータベースに挿入するためにJodaTimeをjava.sql.Dateに変換したいのであれば? – harryo

0

私は(年、月、日)コンストラクタの代わりにフィールドを個別に設定する必要があるので、少し面倒なCalendarクラスを使用すると思います。

しかし、Paulに言及したように、プロジェクトにjarファイルを追加することができれば、Joda Timeを使用することは素晴らしい選択肢です。

+0

おっと、投稿が遅すぎました –

1

ここでは、年月日からjava.sql.Dateを簡単に作成する方法を示します。日付文字列をフォーマットし、Date.valueOf(String)を使用します。

/** 
* Create a java.sql.Date from from year, month, and day of the month. 
*/ 
private java.sql.Date createSqlDate(int year, int month, int day) { 

    // Create a date string with leading zeros for month and day. 
    String dateString = String.format("%d-%02d-%02d", year, month, day); 

    return java.sql.Date.valueOf(dateString); 
} 
関連する問題