9

Javaで日付を加算または減算するにはどうすればよいですか? たとえば、次のjava.sql.Dateようにフォーマットされています: yyyy-MM-dd、そこから 5 か月を追加するにはどうすればよいですか? いくつかのチュートリアルで彼らが使用しているのを見たことがありますがCalendar、日付を設定できますか? 助けてください。

例:2012-01-01追加すると5ヶ月は になり2012-06-01ます。

PS: 私は .Net プログラマーで、ゆっくりと Java 環境を学んでいます。

4

8 に答える 8

14

まず、日付を操作するために使用するよりも、String日付をに変換する必要があります。ミリ秒で数学を行うことも可能ですが、これはお勧めしません。java.util.Datejava.util.Calendar

public static void main( final String[] args ) throws ParseException {
    final String sdate = "2012-01-01";
    final SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd" );
    final Date date = df.parse( sdate ); // conversion from String
    final java.util.Calendar cal = GregorianCalendar.getInstance();
    cal.setTime( date );
    cal.add( GregorianCalendar.MONTH, 5 ); // date manipulation
    System.out.println( "result: " + df.format( cal.getTime() ) ); // conversion to String
}
于 2012-04-12T06:19:19.923 に答える
4

日付計算用の組み込みの Date クラスを避けてください。JodaTime を見てみましょう。JodaTime には、この種のことを行うためのはるかに優れた API があります。

于 2012-04-12T06:21:25.900 に答える
2

使用するCalendar

Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 5);
于 2012-04-12T06:18:14.183 に答える
1

Date を Calendar に変換するには、次を使用します。

Date date = your_date_here;

Calendar cal = Calendar.getInstance();
cal.setTime(date);

次に、カレンダー算術関数を使用して加算/減算します。

cal.add(Calendar.MONTH, 5);
于 2012-04-12T06:23:51.843 に答える
0

または、日付をミリ単位の時間に変換します。計算を行い、ミリ秒を日付に戻します。

于 2012-04-12T06:21:40.610 に答える
0

もう 1 つのオプションは、サード パーティの Apache Commons ライブラリ コレクションのDateUtilsクラスです。例:

Date d = DateUtils.parseDate("2012-01-01", "yyyy-MM-dd");
Date d2 = DateUtils.addMonths(d, 5);
System.out.println("Old date + 5 months = " + d2);
于 2014-03-05T13:57:35.357 に答える