これを置き換えるために何を使用できますか、new Date(2009, 12, 9)
?
ご協力いただきありがとうございます。
理想的には、代わりに Joda Time を使用します。組み込みのAPIよりもはるかに優れたAPIです。次に、正確な要件に応じて LocalDateTime
と DateTime
のどちらかを選択します(複雑な領域です-私はそうではありません) 1つまたは2つの文で要約しようとしますが、 docs はうまくいきます)。
どうしても必要な場合は Java.util.Calendar を使用し、必要に応じてDate
に変換します。
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();
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)
残念ながら、Javaでの日付のサポートは完全にひどいものです。正式には、おそらくカレンダーでこれを行う必要がありますが、私の意見ではそれは必要ではありません。他の人が述べたように、Jodaの時間ははるかに優れていますが、Ruby on Railsの日付ほど簡単に使用できません。
私はかなりの日付サポートを提供するJavaパッケージを知りませんが(Jodaは少し不足していますが、近づいています)、GroovyではTimeCategoryを使用すると非常にRuby on Railsのような日付のサポート。