如何在YearMonth对象中获取一个月的最后一天?

时间:2014-10-01 07:15:08

标签: java jodatime

我正在使用YearMonth的{​​{1}}对象,并希望在此对象中获取月份日期的最后一天。

joda.time

但我想要的是特定月份的最大日期?例如30或31。我怎么能得到它?

3 个答案:

答案 0 :(得分:9)

DateTime有这个现成的功能。

DateTime dt = new DateTime();
System.out.println(dt.dayOfMonth().getMaximumValue());

但是如果你想要它用于YearMonth,那么将YearMonth转换为DateTime并按上述方式执行:

YearMonth ym = new YearMonth();
dt = ym.toDateTime(null);
System.out.println(dt.dayOfMonth().getMaximumValue());

答案 1 :(得分:0)

如果您想在Joda中获得该月的最大日期,请使用LocalDate

例如:

LocalDate endOfMonth = LocalDate.fromDateFields(new 
                                         Date()).dayOfMonth().withMaximumValue();
System.out.println(endOfMonth);

Out put:

2014-10-31

来自documentation

This operation is useful for obtaining a LocalDate on the last day of the month, 
as month lengths vary.    
LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();

答案 2 :(得分:0)

从yearMonth创建一个DateTime对象:

DateTime datetime = new DateTime(yearMonth.get(DateTimeFieldType.year()), yearMonth.get(DateTimeFieldType.monthOfYear()),1,0,0);
System.out.println(datetime.dayOfMonth().getMaximumValue());