19

私がこれを持っているとしましょう:

 PrintStream out = System.out;
 Scanner in = new Scanner(System.in);
 out.print("Enter a number ... ");
 int n = in.nextInt();

たとえば、2015年5月6日のように、ランダムな日付があります(これは固定の日付ではなく、毎回ランダムです)。この日付の「年」を取得し、今年に「n」を追加したい場合、どうすればよいですか?

Dateクラスのメソッドはどれも'int'ではありません。

また、intから年を追加するには、「years」もintである必要があります。

4

9 に答える 9

56

Dateをに変換する必要がありCalendarます。

Calendar c = Calendar.getInstance();
c.setTime(randomDate);
c.add(Calendar.YEAR, n);
newDate = c.getTime();

年(または他のフィールド)をカレンダーとして操作してから、日付に戻すことができます。

于 2012-07-25T04:27:34.760 に答える
18

この質問は長い間現代の答えに値するものでした。さらに、Java 8で現在の日付に10年を追加すると、この質問の重複と見なされます。

他の答えは2012年の良い答えでした。年が経ちました、今日、私は誰も今では時代遅れのクラスCalendarを使うべきではないと信じています、そしてDate言うまでもなくSimpleDateFormat。最新のJava日時APIは、操作が非常に優れています。

その重複した質問の例を使用して、最初に必要なのは

private static final DateTimeFormatter formatter 
        = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");

これで私たちはできる:

    String currentDateString = "2017-09-12 00:00:00";
    LocalDateTime dateTime = LocalDateTime.parse(currentDateString, formatter);
    dateTime = dateTime.plusYears(10);
    String tenYearsAfterString = dateTime.format(formatter);
    System.out.println(tenYearsAfterString);

これは印刷します:

2027-09-12 00:00:00

時刻が必要ない場合は、時刻のない日付なので、LocalDate代わりにクラスをお勧めします。LocalDateTime

    LocalDate date = dateTime.toLocalDate();
    date = date.plusYears(10);

結果はの日付です2027-09-12

質問:最新のAPIの使用方法をどこで学ぶことができますか?

Oracleチュートリアルから始めることができます。ネット上にはもっとたくさんの資料があります。検索してください。

于 2017-11-09T18:09:04.610 に答える
7

これを行うための別のパッケージはorg.apache.commons.lang3.time、にありDateUtilsます。

Date date = new Date();
date = DateUtils.addYears(date, int quantity = 1);
于 2019-10-10T15:45:17.087 に答える
4

クラスはあなたDateを助けませんが、Calendarクラスは次のことができます:

Calendar cal = Calendar.getInstance();
Date f;
...
cal.setTime(f);
cal.add(Calendar.YEAR, n); // Where n is int
f = cal.getTime();

f変数に値を割り当てる必要があることに注意してください。SimpleDateFormat私は文字列を日付に変換するためによく使用します。

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

于 2012-07-25T04:32:33.143 に答える
1

タイプしてみてくださいjava.util.Calendar

Calendar cal=Calendar.getInstance();
cal.setTime(yourDate.getTime());
cal.set(Calendar.YEAR,n);
于 2012-07-25T04:27:55.050 に答える
1

これにより、現在の日付に3年が追加され、年が印刷されます。

 System.out.println(LocalDate.now().plusYears(3).getYear());
于 2020-01-16T07:29:22.043 に答える
0

任意の日付に1年を追加する必要がある場合は、オブジェクトCalendarを使用します。

Calendar dateMoreOneYear = Calendar.getInstance();
dateMoreOneYear.setTime(dateOriginal);
dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);
于 2017-02-06T09:23:57.603 に答える
0

(2019年6月)のようにちょうど1ヶ月と1年もこのようにしてみてください

Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, n); //here n is no.of year you want to increase
SimpleDateFormat format1 = new SimpleDateFormat("MMM YYYY");
System.out.println(cal.getTime());

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
于 2019-06-27T05:56:04.977 に答える
-2

これを試して....

String s = new SimpleDateFormat("YYYY").format(new Date(random_date_in_long)); // 
int i = Integer.parseInt(s)+n;
于 2012-07-25T04:35:51.973 に答える