2013-02-18 30 views
24

Javaの変数に現在の日付を保存するための設定はすべて既に完了しています。私が理解しようとしているのは、現在の日付から1年後の日付をどのように保存するかです。ここで現在の日付と日付をJavaの現在の値から1年保存します

import java.util.Date; 
import java.text.SimpleDateFormat; 
import java.text.DateFormat; 
import java.util.Scanner; 
import java.util.Calendar; 

は、私は、現在の日付のために持っているものです。

DateFormat newDate = new SimpleDateFormat("MM/dd/yyyy"); 
Date date = new Date(); 
startDate = newDate.format(date); 

それは例えば、今日だったのであれば、それは2013年2月18日を格納します。 2014年2月18日の日付を保存しようとしています。これをどうやってやりますか?

+0

どうして... 2/29/2016?それから何年ですか? – Makoto

+1

[Javaカレンダーに年を追加しても機能しない]の複製があります(http://stackoverflow.com/questions/3883167/add-year-to-java-calendar-doesnt-work) –

答えて

68

日付が29/Feb/2012だったし、1年追加した場合だけ、calendar.add(Calendar.YEAR, 1)

Calendar cal = Calendar.getInstance(); 
Date today = cal.getTime(); 
cal.add(Calendar.YEAR, 1); // to get previous year add -1 
Date nextYear = cal.getTime(); 

注意を使用し、外部ライブラリをドラッグしたくない場合は、取得します28/Feb/2013

+1

ありがとうございました@iTechはきれいに働いています – bardockyo

+1

おかげでうまく動作します –

5

使用Calendar#add(int field, int amount) method.You日付と時刻の操作を操作するには、カレンダーAPIを順番に使用する必要があります。アンドロイドで

Calendar today = Calendar.getInstance(); 
Calendar nextYearToday = today; 
nextYearToday.add(Calendar.YEAR, 1); 
-2

、これまでよりも簡単です:

oneYearAfterDate = new Date(date.getTime() + DateUtils.YEAR_IN_MILLIS)

3

TL; DR

LocalDate.parse( 
    "2/18/2013" , 
    DateTimeFormatter.ofPattern ("M/d/uuuu") 
).plusYears(1) 

詳細

accepted Answerは正しいが、Java 8のように時代遅れです。

java.time

java.time Java 8以降に組み込まれたフレームワークは、面倒な古いjava.util.Date/.Calendarクラスに取って代わります。新しいクラスは、成功したJoda-Timeフレームワークによってインスピレーションを受けており、コンセプトは同様ですが再設計されています。定義:JSR 310。プロジェクトThreeTen-Extraによって拡張されました。 Tutorialを参照してください。

LocalDate

これらの新しいクラスは、無時刻やタイムゾーンと日付のみの値を表すために、LocalDate含まれています。

まず、String入力を解析する必要があります。 java.time formatterは、古いクラスに似たパターンコードを使用しますが、まったく同じではありません。だから、新しい文書を注意深く読んでください。

パッド入りゼロ、あなたの入力文字列がいくつかの値についてゼロ桁をリード欠け

注意してください。つまり、とddではなく、とdの単一パターンコードを使用する必要があります。ダブルコードは、2ではなく、02以外の場合、常に1桁の値にパディングゼロを含めることを意味します。

String input = "2/18/2013"; 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("M/d/uuuu"); 
LocalDate localDate = LocalDate.parse (input , formatter); 

年を追加します。 java.timeフレームワークはうるう年を担当します。

LocalDate yearLater = localDate.plusYears (1); 

コンソールにダンプします。

System.out.println ("localDate: " + localDate + " and yearLater: " + yearLater); 

LOCALDATE:2013年2月18日とyearLater:2014年2月18日

+0

ありがとうございます。遅い答えの良い例は、まだ大きな価値を追加することができます。 – HopeKing

0
Calendar cal = Calendar.getInstance(); 
     Date today = cal.getTime(); 
     cal.add(Calendar.YEAR, 1); // to get previous year add 1 
     cal.add(Calendar.DAY_OF_MONTH, -1); // to get previous day add -1 
     Date expiryDate = cal.getTime(); 


     System.out.println("today is --> "+today); 
     System.out.println("expiryDate is --> "+expiryDate); 

アウトプット 今日である - >金12月1日10時10分52秒GMT + 05:30 2017

有効期限 - >金11月30日10:10:52 GMT + 05:30 2018

日付今日がある - >金12月1日10時10分52秒GMT + 05:30 2017

expiryDateがある - >金11月30日10時10分52秒GMT + 05:30 2018

enter image description here

+0

FYIでは、面倒な 'Date'クラスと' Calendar'クラスが残っているので、避けてください。これらはJava 8とJava 9に組み込まれたjava.timeクラスに置き換えられます。Java 6とJava 7の場合は、* ThreeTen-Backport *プロジェクトを参照してください。 –

+0

Java 9の有効期限の確認方法をお手伝いしてください。 –

+0

java.timeコードの[my answer](https://stackoverflow.com/a/33967171/642706)を参照してください。 –

関連する問題