Java에서 현재 날짜에 한 달을 추가하려면 어떻게해야합니까?
답변
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
답변
자바 8
LocalDate futureDate = LocalDate.now().plusMonths(1);
답변
아파치의 공용 lang DateUtils 도우미 유틸리티 클래스를 사용할 수 있습니다.
Date newDate = DateUtils.addMonths(new Date(), 1);
http://commons.apache.org/proper/commons-lang/ 에서 commons lang jar를 다운로드 할 수 있습니다 .
답변
tl; dr
LocalDate::plusMonths
예:
LocalDate.now( )
.plusMonths( 1 );
시간대를 지정하는 것이 좋습니다.
LocalDate.now( ZoneId.of( "America/Montreal" )
.plusMonths( 1 );
java.time
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 다음과 같은 기존의 번잡 한 날짜 – 시간의 수업을 대신하는 java.util.Date
, .Calendar
, java.text.SimpleDateFormat
. Joda 타임 팀은 java.time로 마이그레이션을 조언한다.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오.
많은 java.time 기능은 자바 6 7 백 포팅 ThreeTen – 백 포트 및 상기 안드로이드 적응 ThreeTenABP .
날짜 만
데이트 전용을 원한다면 LocalDate
수업을 사용하십시오 .
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
today.toString () : 2017-01-23
한 달을 추가하십시오.
LocalDate oneMonthLater = today.plusMonths( 1 );
oneMonthLater.toString () : 2017-02-23
날짜 시간
날짜와 함께 시간을 원할 수 있습니다.
먼저 나노초 해상도로 UTC 로 현재 순간을 가져옵니다 .
Instant instant = Instant.now();
월을 추가한다는 것은 날짜를 결정하는 것을 의미합니다. 그리고 날짜를 결정하는 것은 시간대를 적용하는 것을 의미합니다. 어느 순간이든, 날짜는 동쪽에서 더 일찍 새벽이 밝아지면서 전 세계적으로 다양합니다. 그래서 그것을 Instant
시간대로 조정하십시오 .
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
이제 월을 추가하십시오. java.time이 윤월을 처리하고 월의 길이가 다양하다는 사실을 확인하십시오.
ZonedDateTime zdtMonthLater = zdt.plusMonths( 1 );
이런 종류의 계산을 할 때 시간을 하루의 첫 번째 순간으로 조정할 수 있습니다. 그 첫 순간이 항상 그런 것은 00:00:00.0
아니므로 java.time이 시간을 결정하도록하십시오.
ZonedDateTime zdtMonthLaterStartOfDay = zdtMonthLater.toLocalDate().atStartOfDay( zoneId );
java.time 정보
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 – 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.
java.time 클래스는 어디서 구할 수 있습니까?
- 자바 SE 8 , 자바 SE 9 , 나중에
- 내장.
- 번들로 구현 된 표준 Java API의 일부입니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되었습니다.
- Java SE 6 및 Java SE 7
- java.time 기능의 대부분은 ThreeTen-Backport의 Java 6 및 7로 백 포트됩니다 .
- 기계적 인조 인간
- ThreeTenABP의 프로젝트는 적응 ThreeTen – 백 포트 특히 안드로이드에 대한 (위에서 언급).
- ThreeTenABP 사용 방법…을 참조하십시오 .
ThreeTen – 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가 될 수있는 가능성을 입증하는 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .
Joda-Time
업데이트 : Joda-Time 프로젝트는 이제 유지 관리 모드입니다. 팀은 java.time 클래스로의 마이그레이션을 조언합니다. 이 섹션은 후손을 위해 그대로 둡니다.
Joda 타임 라이브러리는 현명한 방법으로 달을 추가 할 수있는 방법을 제공합니다.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = DateTime.now( timeZone );
DateTime nextMonth = now.plusMonths( 1 );
시간을 하루의 첫 번째 순간으로 조정하여 하루에 집중할 수 있습니다.
DateTime nextMonth = now.plusMonths( 1 ).withTimeAtStartOfDay();
답변
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
java.util.Date dt = cal.getTime();
답변
(덕구 각색)
public static Date addOneMonth(Date date)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
return cal.getTime();
}
답변
calander를 사용하고이 코드를 시도하십시오.
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();