JodaTime으로 특정 달의 마지막 날짜를 얻는 방법은 무엇입니까?


110

org.joda.time.LocalDate한 달 의 첫 번째 날짜 와 마지막 날짜를 가져와야합니다 . 첫 번째를 얻는 것은 사소한 일이지만 마지막을 얻는 것은 달의 길이가 다르고 2 월의 길이는 해에 따라 달라지기 때문에 약간의 논리가 필요한 것 같습니다. JodaTime에 이미 내장 된 메커니즘이 있습니까 아니면 직접 구현해야합니까?


2
그냥 헤드 업, 이것은 또한 작동 DateTime: 유형
vikingsteve

답변:


222

어때 :

LocalDate endOfMonth = date.dayOfMonth().withMaximumValue();

dayOfMonth()LocalDate.Property원래를 알고있는 방식으로 "일"필드를 나타내는를 반환합니다 LocalDate.

withMaximumValue()방법은 이 특정 작업에 권장하도록 문서화 되어 있습니다.

이 작업은 월 길이가 다양하므로 해당 월의 마지막 날에 LocalDate를 얻는 데 유용합니다.

LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();

1
@Jon Skeet Java 8의 새로운 날짜 및 시간 API를 사용하여이를 얻는 방법은 무엇입니까?
Warren M. Nocos 2015

5
@ WarrenM.Nocos : 내가 사용하는 거라고dt.with(TemporalAdjusters.lastDayOfMonth())
존 소총

4

또 다른 간단한 방법은 다음과 같습니다.

//Set the Date in First of the next Month:
answer = new DateTime(year,month+1,1,0,0,0);
//Now take away one day and now you have the last day in the month correctly
answer = answer.minusDays(1);

4
당신의 달이 12이면 어떻게 될까요?
jon

JodaTime API는 정교하고 완전히로드 된 편리한 작업입니다. 이를 수행하는 더 많은 다른 올바른 방법이 있습니다.
aaiezza

월이 12이면 마지막 날이 31 인 것을 알고 있습니까? 다음과 같이 입력하십시오. if (month <12) {answer = new DateTime (year, month + 1,1,0,0,0); 답변 = answer.minusDays (1); } 그렇지 않으면 대답 = 31;
Abraham Maldonado Barrios

1

오래된 질문이지만 이것을 찾고 있었을 때 최고의 Google 결과입니다.

누군가가 intJodaTime을 사용하여 실제 마지막 날을 필요로하는 경우 다음을 수행 할 수 있습니다.

public static final int JANUARY = 1;

public static final int DECEMBER = 12;

public static final int FIRST_OF_THE_MONTH = 1;

public final int getLastDayOfMonth(final int month, final int year) {
    int lastDay = 0;

    if ((month >= JANUARY) && (month <= DECEMBER)) {
        LocalDate aDate = new LocalDate(year, month, FIRST_OF_THE_MONTH);

        lastDay = aDate.dayOfMonth().getMaximumValue();
    }

    return lastDay;
}

1
다음과 같이 약간 더 깔끔한 대답을 선호했습니다. public static int getLastDayOfMonth (int year, int month) {LocalDate date = new LocalDate (year, month, 1 return date.dayOfMonth (). getMaximumValue ();}하지만 귀하의 대답 일 때문에, 약간 어수선 경우에도, 슈퍼 유용)
jumps4fun

-1

JodaTime을 사용하여 다음을 수행 할 수 있습니다.

    public static final Integer CURRENT_YEAR = DateTime.now (). getYear ();

    public static final Integer CURRENT_MONTH = DateTime.now (). getMonthOfYear ();

    public static final Integer LAST_DAY_OF_CURRENT_MONTH = DateTime.now ()
            .dayOfMonth (). getMaximumValue ();

    public static final Integer LAST_HOUR_OF_CURRENT_DAY = DateTime.now ()
            .hourOfDay (). getMaximumValue ();

    public static final Integer LAST_MINUTE_OF_CURRENT_HOUR = DateTime.now (). minuteOfHour (). getMaximumValue ();

    public static final Integer LAST_SECOND_OF_CURRENT_MINUTE = DateTime.now (). secondOfMinute (). getMaximumValue ();


    public static DateTime getLastDateOfMonth () {
        새로운 DateTime (CURRENT_YEAR, CURRENT_MONTH,
                LAST_DAY_OF_CURRENT_MONTH, LAST_HOUR_OF_CURRENT_DAY,
                LAST_MINUTE_OF_CURRENT_HOUR, LAST_SECOND_OF_CURRENT_MINUTE);
    }

github에 대한 내 작은 요점에서 설명하는 것처럼 유용한 기능이 많은 JodaTime 및 java.util.Date Util 클래스.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.