如何使用Jodatime从当前日期计算下一个生日。
例如当前日期是2016年5月31日
出生日期是1991年2月26日和1991年7月23日
输出如下所示。
Birthday Next Birthday
Feb 26, 1991 Feb 26, 2017
July 23, 1991 July 26, 2016
答案 0 :(得分:0)
我建议做以下事项:
public static void main(String[] args) throws Throwable {
String d1 = "Feb 26, 1991";
String d2 = "July 23, 1991";
DateTimeFormatter f =
DateTimeFormat.forPattern("MMM dd, yyyy").withLocale(Locale.ENGLISH);
System.out.println(nextBirthDay(f.parseLocalDate(d1))); // 2017-02-26
System.out.println(nextBirthDay(f.parseLocalDate(d2))); // 2016-07-23
}
private static LocalDate nextBirthDay(LocalDate date) {
LocalDate today = LocalDate.now(DateTimeZone.getDefault());
int year = today.getYear();
int month = date.getMonthOfYear();
int dayOfMonth = date.getDayOfMonth();
if (
today.getMonthOfYear() > month
|| (today.getMonthOfYear() == month && today.getDayOfMonth() > dayOfMonth)
) {
year++;
}
return new LocalDate(year, month, dayOfMonth);
}