如何使用Jodatime从当前日期计算下一个生日

时间:2016-05-31 05:26:00

标签: datetime jodatime date-arithmetic

如何使用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

1 个答案:

答案 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);
}