我要将YearMonth日期转换为LocalDate,这将是该月的最后一天。所以我需要使用toLocalDate(int i)方法。如何使用yearMonth实例将该月的最后一天传递给该方法?
答案 0 :(得分:0)
如果没有简单地拥有array
个数字,您可以使用以下内容以编程方式找出它:
if (month == 2 && year % 4 == 0)
return 29;
else if (month == 2)
return 28;
else {
if (month > 7)
month -= 1;
if (month % 2 == 0) //Month number is even
return 30;
else
return 31;
}
所以要完成这个:
示例:2015年2月。month = 2
和year = 2015
。 month
确实等于2
但year % 4
等于3
。最终结果return 28
。
示例2:2015年10月。month = 10
和year = 2015
。 month
大于7,因此month = 9
。 month
很奇怪,最终结果为return 31
。
答案 1 :(得分:0)
您可以使用dateTime.dayOfMonth().getMaximumValue()
来获取当月和当年的最后一天。
public class Test {
public static void main(String[] args) {
YearMonth ym = new YearMonth();
System.out.println(ym);
int dayCount = daysOfMonth(ym.getYear(), ym.getMonthOfYear());
LocalDate localDate = new LocalDate(ym.getYear(), ym.getMonthOfYear(), dayCount);
System.out.println(localDate);
}
public static int daysOfMonth(int year, int month) {
DateTime dateTime = new DateTime(year, month, 14, 12, 0, 0, 000);
return dateTime.dayOfMonth().getMaximumValue();
}
}
此外,您只需更改主要方法部分(无需更改daysOfMonth方法)
public static void main(String[] args) {
YearMonth ym = new YearMonth();
System.out.println(ym);
LocalDate endOfMonth = ym.toLocalDate(daysOfMonth(ym.getYear(), ym.getMonthOfYear()));
System.out.println(endOfMonth);
}
答案 2 :(得分:0)
最后我提出了这个解决方案:
yearMonth.toLocalDate(yearMonth.plusMonths(1).toLocalDate(1).minusDays(1).getDayOfMonth())
我需要获得下个月的第一天,然后使用minusDays(1)方法从中减去1天。