28

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

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

4

8 に答える 8

26

注: この回答は 2009 年に書かれました。それ以来、java.timeJava で優先される日付/時刻 API になりました。


理想的には、代わりにJoda Timeを使用してください。組み込みの API よりもはるかに優れた API です。LocalDateTime次に、正確な要件に応じて、どちらかを選択する必要がありDateTimeます (これは複雑な領域です。1、2 文で要約するつもりはありませんが、ドキュメントはうまく機能します)。

絶対に必要な場合は、java.util.CalendarDateを使用し、必要なときにそれを に変換します。

于 2009-12-09T14:35:12.890 に答える
25

カレンダー!

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();
于 2009-12-09T14:55:33.710 に答える
17

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();
于 2009-12-09T14:35:23.443 に答える
8

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 );
    }
}
于 2009-12-09T14:43:36.410 に答える
4

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

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

于 2009-12-09T17:13:55.597 に答える
2
GregorianCalendar(year + 1900, month, date)

https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html

于 2009-12-09T14:35:57.547 に答える
2

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

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

于 2009-12-09T14:51:18.350 に答える