1

1. JDateChooser でsetMaxSelectableDate=18yearsを設定したいので、ミリ秒単位で日付を指定しましたが、18 年単位でインクリメントするにはどうすればよいですか。
2. 18 年ずつインクリメントすると、計算は365*18*24*60*60*1000=56764800000になり、エラー整数が大きくなります。

 Date max=new Date();
Date oth1=new Date(max.getTime() + (365*18*24*60*60*1000));  //days*hours*minutes*seconds*milliseconds
SimpleDateFormat maxdateFormatter1 = new SimpleDateFormat("MMM d,yyyy hh:mm:ss a");
String maxdate=maxdateFormatter1.format(oth1);  
DateChooser_V1.setMaxSelectableDate(new java.util.Date(maxdate));
4

5 に答える 5

9

java.util.Calendarあなたのためにこの仕事をしましょう:

Calendar c = Calendar.getInstance();
c.setTime(oldDate);
c.add(Calendar.YEAR, 18);
Date newDate = c.getTime();

うるう年、過去の GMT オフセットの変更、過去のサマータイム スケジュールの変更などを処理します。

于 2013-03-12T20:56:19.793 に答える
1

JodaTime

DateTime in18Years = new DateTime( ).plusYears( 18 );

に変換する方法は次のとおりです。java.util.Date

Date in18Years = new DateTime( ).plusYears( 18 ).toDate( );
于 2013-03-12T21:06:33.487 に答える
1

を使用する必要がありますlongLこれは、番号に を追加することで実現できます。

365L* ...

于 2013-03-12T20:52:58.697 に答える
0

秒 (またはミリ秒) を勝手に追加して、カレンダーの計算が正しく行われることを期待することはできません。基本的に、うるう年、うるう秒、および夏時間の移行をすべて考慮するには、余分な労力が必要です。

Java 1.8 が登場するまでは、java.util.Calendarの代わりに使用してください。事実上すべてが廃止されたのjava.util.Dateには、本当に正当な理由があります。java.util.Date最初は良さそうに見えても、使い込んでいくうちに「動かない(tm)」ということがよくあります。

 GregorianCalendar now = new GregorianCalendar();
 now.add(Calendar.YEAR, 18);

そして、それはあなたがオーバーフローしなかったと仮定していますInteger.MAX_INT.

于 2013-03-12T20:53:39.437 に答える
0

Calendarこれを達成するためにオブジェクトを使用します。

Calendar cal = Calendar.getInstance();
Date dt = new Date();
...
// Set the date value
...
cal.setTime(dt);
cal.add(Calendar.YEAR, +18);
dt = cal.getTime();

これがお役に立てば幸いです

于 2013-03-12T20:55:58.840 に答える