これを置き換えるために何を使用できnew Date(2009, 12, 9)
ますか?
ご協力いただきありがとうございます。
注: この回答は 2009 年に書かれました。それ以来、java.time
Java で優先される日付/時刻 API になりました。
理想的には、代わりにJoda Timeを使用してください。組み込みの API よりもはるかに優れた API です。LocalDateTime
次に、正確な要件に応じて、どちらかを選択する必要がありDateTime
ます (これは複雑な領域です。1、2 文で要約するつもりはありませんが、ドキュメントはうまく機能します)。
絶対に必要な場合は、java.util.CalendarDate
を使用し、必要なときにそれを に変換します。
Calendar cal = Calendar.getInstance();
cal.set(2009, Calendar.DECEMBER, 12);
実際には 11 (1 月は 0) であるため、12 月に 12 を入れていないことに注意してください。
次に、秒、分、時間、日、月、または年を簡単に追加または削除できます。
cal.add(Calendar.HOUR, 2);
cal.add(Calendar.MONTH, -5);
最後に、 Date が必要な場合:
cal.getTime();
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();
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 );
}
}
ティム、あなたのコメントの中で、あなたはこれをGXTコンテキストで、つまりGWTクライアントコードで行っていると述べました。GWTはGregorianCalendarをサポートしておらず、GWTCompilerを介してJodaTimeを配置できない可能性があります(できる場合もありますが、本当に実行したいですか)。
GWTでカレンダー操作を実行したい場合は、JNSIを使用するオプションが本当に残っていると思います。JavaScriptのDateクラスを参照してください。
GregorianCalendar(year + 1900, month, date)
https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html
残念ながら、Java での日付のサポートは完全にひどいものです。公式には、おそらくカレンダーでこれを行う必要がありますが、私の意見では、それは必要ないはずです。他の人が言及したように、Joda 時間ははるかに優れていますが、Ruby on Rails の日付ほど使いやすいとは言えません。
これだけの量の日付サポートを提供する Java パッケージを私は知りません (Joda は少し不足していますが、それに近いものです)。しかし、Groovy では、TimeCategory を使用すると、非常に Ruby on Rails のような日付サポートが得られます。