我需要得到一个月的最后一个日期(如org.joda.time.LocalDate
)。获得第一个是微不足道的,但最后似乎需要一些逻辑,因为月份的长度不同,而且二月的长度甚至会在几年内变化。有没有一种机制已经内置于JodaTime中,还是我应该自己实现?如何使用JodaTime获取特定月份的最后日期?
回答
如何:
LocalDate endOfMonth = date.dayOfMonth().withMaximumValue();
dayOfMonth()
返回LocalDate.Property
代表现场“月日”在哪晓得始发LocalDate
的方式。
当它发生时,withMaximumValue()
方法甚至documented推荐它这个特殊的任务:
此操作是在每月的最后一天获得LOCALDATE的,因为一个月长度会有所变化非常有用。
LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();
@Jon Skeet如何使用Java 8的新日期和时间API来获取? – 2015-11-09 12:21:56
@ WarrenM.Nocos:我会用'dt.with(TemporalAdjusters.lastDayOfMonth())' – 2015-11-09 12:38:20
一个老问题,但顶谷歌的结果时,我一直在寻找这一点。
如果有人需要实际的最后一天为int
,而不是使用JodaTime你可以这样做:
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(); 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() { return new 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:A JodaTime and java.util.Date Util Class with a lot of usefull functions.
另一个简单的方法是这样的:
//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);
如果你的月份是12,那么会发生什么? – jon 2018-02-28 20:12:45
- 1. 从特定日期获取日期,月份和年份
- 2. 月份的最后日期
- 3. 如何从YearMonth日期获取月份的最后一天?
- 4. 如何获取月份的最后日期
- 5. 使用Yii CDbCriteria获取特定月份的日期
- 6. 如何获取特定月份的日期
- 7. 在PHP中抓取特定月份的第一个日期和最后日期
- 8. 获取指定日期的月份的第一个和最后一个日期
- 9. Scala - 获取特定年份的所有月份和日期
- 10. 从日期获取月份的日期
- 11. 如何使用Jodatime列出给定月份中的所有日期
- 12. 如何在C#.net中获取选定月份的最后日期?
- 13. 使用Jquery获取日期和月份
- 14. 如何使用当前月份和年份在scala上获取第一个日期和最后一个日期
- 15. 如何获取月份的月份发生日期
- 16. 如何在java中获得给定月份和年份的最后日期
- 17. 如何使用mysql获取本月最后一个星期日的日期?
- 18. 如何获得java中给定月份的最小日期和最大日期
- 19. 如何仅获取星期一在两个给定日期之间的月份的最后一天的日期
- 20. 从给定日期获取月份,日期和年份
- 21. PHP - 如何计算特定日期之后的月份数
- 22. 如何从日期时间使用JavaScript获取日期,年份,月份?
- 23. 如何在Oracle中获得当前月份的特定日期?
- 24. java获取给定月份和给定年份的第一个日期和最后一个日期
- 25. 获取特定月份和年份的上个星期六日期
- 26. 日历 - 获取月份和月份的日期
- 27. 如何添加日期以及月份到特定日期?
- 28. 使用月份日历获取选定星期的星期六日期值
- 29. 获取特定月份
- 30. 获取特定日期在一个月
只是单挑,这也适用于'DateTime'类型:) – vikingsteve 2014-09-26 11:14:16