2013-05-06 2 views
39

어떻게현재 날짜에서 한 달을 줄이고 java를 사용하여 날짜 변수에 저장하는 방법은 무엇입니까?

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

어떻게 java.util.Date 변수에이 날짜를 저장하기 위해 현재 날짜로부터 한 달 절감하고이 코드를 사용 java.util.Date 변수 메신저에 상처를 원하지만 그것은 두번째 줄에 오류가 표시거야 하는가?

+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이 날짜 manip 수있는 편리한 API를 제공합니다 ulation.

유사한 Date API가 JSR310과 함께 JDK8에 도입되었습니다.

+0

deprecated 메서드입니다. –

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를 원한다면,'ZonedDateTime'보다는'OffsetDateTime'을 사용하는 것이 더 적절합니다. –

+0

좋은 지적, 업데이트 됨 :) – DVarga

관련 문제