2013-05-06 12 views
39

どのよう現在の日付から1ヶ月を減らし、javaを使用して日付変数に格納する方法はありますか?

java.util.Date da = new Date(); 
da.add(Calendar.MONTH, -1); //error 

どうjava.util.Date変数にこの日付を格納するために、現在の日付から1ヶ月を削減し、このコードを使用してjava.util.Date変数 イムに痛みをしたいが、それは2行目でエラーを示していますか?

+0

使用 "カレンダー" クラス – anstarovoyt

+1

は、この[解答](http://stackoverflow.com/questions/1311143/java-util-date-deleting-three-months-from-a-を参照してください。日付) – Amarnath

+0

私はそのクラスを使用.. – karthi

答えて

73

使用カレンダー:

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MONTH, -1); 
Date result = cal.getTime(); 
+0

cal.getTime()はDateオブジェクトを返します –

7
Calendar calNow = Calendar.getInstance() 

// adding -1 month 
calNow.add(Calendar.MONTH, -1); 

// fetching updated time 
Date dateBeforeAMonth = calNow.getTime(); 
+0

日付変数にこの日付を格納する方法 – karthi

+1

@karthi 'date dateValue = calNow.getTime();' .... – MadProgrammer

4

あなたがJodaTimeを使用しCalendar

java.util.Date da = new Date(); 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(da); 
    cal.add(Calendar.MONTH, -1); 
    da = cal.getTime(); 
+1

( ' setTime'は 'Calendar.getInstance'が現在の日付/時刻に設定された' Calendar'を返すので、デモンストレーションの目的です。あなたは 'da = cal.getTime()'に入れて終了することもできます最後に「Date」という値を持つ)... – MadProgrammer

+0

はい、そうです!ありがとう。 – Ahiel

5

を使用することができます。

Date date = new DateTime().minusMonths(1).toDate(); 

JodaTime日付マニピュレータのための便利なAPIを提供ulation。

同様の日付APIは、JSR310でJDK8に導入されることに注意してください。

+0

廃止予定のメソッドです。 –

3

Java 8からは、CalendarではなくDate-Time APIを使用することをお勧めします。

あなたはDateオブジェクトが返される場合:あなたは正確にDateオブジェクトを必要としない場合

Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant()); 

、あなたも他で日付を取得するには、パッケージが提供するクラスを直接、使用することができます時間帯:

ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1); 
+0

この回答を変更して、「ZoneOffset.UTC」ではなく「ZoneId.of(Pacific/Auckland)」などの特定のタイムゾーンを表示することをお勧めします。もし誰かが本当にUTCを望むならば、 'OffsetDateTime'は' ZonedDateTime'よりも適切です。 –

+0

良い点、更新済:) – DVarga

関連する問題