我的输入字符串日期如下:

String date = "1/13/2012";

我得到的月份如下:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = dateFormat.parse(date);
String month = new SimpleDateFormat("MM").format(convertedDate);

但是,如何获取给定String日期中月份的最后一个日历日?

例如:对于字符串"1/13/2012",输出必须为"1/31/2012"

最佳答案

Java 8及更高版本。

通过使用convertedDate.getMonth().length(convertedDate.isLeapYear()),其中convertedDateLocalDate的实例。

String date = "1/13/2012";
LocalDate convertedDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("M/d/yyyy"));
convertedDate = convertedDate.withDayOfMonth(
                                convertedDate.getMonth().length(convertedDate.isLeapYear()));

Java 7及更低版本。

通过使用getActualMaximumjava.util.Calendar方法:
String date = "1/13/2012";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = dateFormat.parse(date);
Calendar c = Calendar.getInstance();
c.setTime(convertedDate);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));

07-28 03:49