web-dev-qa-db-ja.com

Java.util.Dateクラスのパラメーター化されたコンストラクターは非推奨になりました。代替は何ですか?

これを置き換えるために何を使用できますか、new Date(2009, 12, 9)

ご協力いただきありがとうございます。

26
Tim

理想的には、代わりに Joda Time を使用します。組み込みのAPIよりもはるかに優れたAPIです。次に、正確な要件に応じて LocalDateTimeDateTime のどちらかを選択します(複雑な領域です-私はそうではありません) 1つまたは2つの文で要約しようとしますが、 docs はうまくいきます)。

どうしても必要な場合は Java.util.Calendar を使用し、必要に応じてDateに変換します。

26
Jon Skeet

カレンダー!

Calendar cal = Calendar.getInstance();
cal.set(2009, Calendar.DECEMBER, 12);

12は実際には11(1月は0)であるため、12に指定しなかったことに注意してください。

次に、秒、分、時間、日、月、または年を簡単に追加または削除できます。

cal.add(Calendar.HOUR, 2);
cal.add(Calendar.MONTH, -5);

最後に、日付が必要な場合:

cal.getTime();
25
Maxime ARNSTAMM

Javadoc を見ると、 Calendar を使用していることがわかります。

JDKバージョン1.1以降は、Calendar.set(年+ 1900、月、日付、時間、分)またはGregorianCalendar(年+ 1900、月、日付、時間、分)に置き換えられました。

Dateコンストラクターのパラメーターを見ると、なぜそれが廃止されたのかがわかります。

パラメーター:

year - the year minus 1900.
month - the month between 0-11.
date - the day of the month between 1-31.
hrs - the hours between 0-23.
min - the minutes between 0-59.

yearはあなたが期待するものではなく、どちらもmonthではありません。

あなたが言及した日付を表すには、このようにDateを呼び出す必要があります(非推奨)

new Date(2009-1900, 12-1, 9)

Calendarを使用する別の方法は、

Calendar cal = Calendar.getInstance();
cal.set(2009, 11, 9); //year is as expected, month is zero based, date is as expected
Date dt = cal.getTime();
17
pjp

SimpleDateFormat オブジェクトを使用することもできます:

import Java.util.Date;
import Java.text.SimpleDateFormat;
import Java.text.ParseException;


public class DateTest {
    public static void main( String [] args ) throws ParseException {
        SimpleDateFormat sdf =  new SimpleDateFormat("yyyy, MM, dd");
        Date date = sdf.parse("2009, 12, 9");
        System.out.println( date );
    }
}
8
OscarRyz

ティム、あなたのコメントの中で、これはGXTコンテキストで、つまりGWTクライアントコードで行っていると述べました。 GWTはGregorianCalendarをサポートしていないため、GWTCompilerを介してJodaTimeを置くことができない可能性があります(できるかもしれませんが、本当に望んでいますか)。

GWTでカレンダー操作を実行する場合は、JNSIを使用するオプションが本当に残っていると思います。 JavaScriptのDateクラスを参照してください。

4
Nick Hristov
GregorianCalendar(year + 1900, month, date)

http://Java.Sun.com/j2se/1.4.2/docs/api/Java/util/Date.html

2
Dave

残念ながら、Javaでの日付のサポートは完全にひどいものです。正式には、おそらくカレンダーでこれを行う必要がありますが、私の意見ではそれは必要ではありません。他の人が述べたように、Jodaの時間ははるかに優れていますが、Ruby on Railsの日付ほど簡単に使用できません。

私はかなりの日付サポートを提供するJavaパッケージを知りませんが(Jodaは少し不足していますが、近づいています)、GroovyではTimeCategoryを使用すると非常にRuby on Railsのような日付のサポート。

2
mcv