如何使用Jodatime计算当前日期的下一个生日
How to calculate next birthday from current date using Jodatime
如何使用 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
我建议执行以下操作:
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);
}
如何使用 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
我建议执行以下操作:
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);
}