如何使用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。