我将介绍不同 Java 版本的解决方案。
Java 8 及更高版本:java.time
我建议您使用现代 Java 日期和时间 API java.time 进行日期工作。
DateTimeFormatter expirationParser = DateTimeFormatter.ofPattern("MM/uuuu");
String expirationString = "02/2021";
LocalDate expirationDay = YearMonth.parse(expirationString, expirationParser)
.atEndOfMonth();
System.out.println(expirationDay);
输出:
2021-02-28
Java 6 和 7:通过 ThreeTen Backport 的 java.time
代码与上面相同。java.time 已在 ThreeTen Backport 项目中向后移植到 Java 6 和 7。链接在底部。
Java 1.5:Joda-Time
DateTimeFormatter expirationParser = DateTimeFormat.forPattern("MM/yyyy");
String expirationString = "02/2021";
LocalDate expirationDay = YearMonth.parse(expirationString, expirationParser)
.plusMonths(1) // following month
.toLocalDate(1) // day 1 of month
.minusDays(1); // last day of expiration month
System.out.println(expirationDay);
2021-02-28
Java 1.1 到 1.4:日历
DateFormat expirationFormat = new SimpleDateFormat("MM/yyyy");
String expirationString = "02/2021";
Date expirationMonth = expirationFormat.parse(expirationString);
Calendar expirationCalendar = Calendar.getInstance();
expirationCalendar.setTime(expirationMonth);
expirationCalendar.add(Calendar.MONTH, 1); // 1st of following month
expirationCalendar.add(Calendar.DATE, -1); // Last day of expiration month
System.out.println(expirationCalendar.getTime());
2021 年 2 月 28 日星期日 00:00:00 CET
链接