Java에서 현재 날짜에 한 달을 어떻게 추가합니까? 현재 날짜에 한

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 클래스는 어디서 구할 수 있습니까?

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();