2013-05-06 57 views
39

如何一個月從當前日期和降低使用此代碼想瘡java.util.Date可變 IM,但它顯示錯誤在第2行如何從當前日期減少一個月並使用java存儲在日期變量中?

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

如何對這個日期存儲在java.util.Date變量?

+0

使用「日曆」 – anstarovoyt 2013-05-06 06:10:00

+1

類請參見本【答案】(http://stackoverflow.com/questions/1311143/java-util-date-deleting-three-months-from-a-日期) – Amarnath 2013-05-06 06:10:19

+0

雅我使用那個類.. – karthi 2013-05-06 06:10:38

回答

73

使用日曆:

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

cal.getTime()將返回一個Date對象 – 2013-05-06 06:12:25

7
Calendar calNow = Calendar.getInstance() 

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

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

如何將日期存儲在日期變量中 – karthi 2013-05-06 06:15:34

+1

@karthi'Date dateValue = calNow.getTime();'...... – MadProgrammer 2013-05-06 06:15:57

4

可以使用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 2013-05-06 06:15:21

+0

是的,你是對的!謝謝。 – Ahiel 2013-05-06 09:34:33

5

使用JodaTime

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

JodaTime提供了一個方便的API的日期MANIP ulation。

請注意,類似的Date API將在JDK8中引入JSR310

+0

不贊成使用的方法。 – 2017-09-19 18:20:43

3

從Java 8開始,建議的方法是使用Date-Time API而不是Calendar

如果你想被返回Date對象:

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

如果你不需要完全是一個Date對象,你可以直接使用的類,由包提供,甚至得到日期其他時區:

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

我建議更改此答案以顯示特定時區,例如'ZoneId.of(「Pacific/Auckland」)'而不是'ZoneOffset.UTC'。如果有人真的需要UTC,那麼比'ZonedDateTime'更適合使用'OffsetDateTime'。 – 2016-09-16 20:38:27

+0

好點,更新:) – DVarga 2016-09-17 11:51:55

相關問題