如何使用JodaTime获取特定月份的最后date?

我需要得到一个月的最后一个date(如org.joda.time.LocalDate )。 获得第一个是微不足道的,但最后似乎需要一些逻辑,因为月份长度不同,二月份的长度甚至会随着年份的变化而变化。 有没有一种机制已经内置到JodaTime中,还是我应该自己实现?

怎么样:

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

dayOfMonth()以知道原始LocalDate的方式返回一个LocalDate.Property ,它表示“月份的date”字段。

碰巧, withMaximumValue()方法甚至被logging为推荐它用于这个特定的任务:

此操作对于在月份的最后一天获取LocalDate很有用,因为月份长度有所不同。

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

另一个简单的方法是:

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

一个古老的问题,但当我正在寻找这个谷歌的结果。

如果有人需要实际的最后一天,而不是使用JodaTime的int你可以这样做:

 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; } 

使用JodaTime,我们可以做到这一点:


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

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

    公共静态最后整数LAST_DAY_OF_CURRENT_MONTH = DateTime.now()
             。.dayOfMonth()getMaximumValue();

    公共静态最后整数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();


    公共静态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类有很多有用的function。