gpt4 book ai didi

java - 给定出生日期计算下一个生日日期?

转载 作者:行者123 更新时间:2023-12-02 09:07:56 25 4
gpt4 key购买 nike

给定出生日期(在 Date 对象中)计算下一个生日的最简单方法是什么?

我相信 java.time 是人们趋向于使用的库。

下面的解决方案显示了如何查找一周中的第二天,但文档似乎不支持这种情况。 How can I get a DateTime corresponding to next occurence of hour, minute?

谢谢!

最佳答案

假设 - 您有一个 java.util.Date 输入,并且需要一个 java.util.Date 输出。

第一个建议 - 停止使用java.util.Date。较新的 java.time API 实现得更好,一旦您习惯使用它,就会更容易使用

好的,首先,我们要将 java.util.Date 转换为 java.time.LocalDate...

public LocalDate toLocalDate(Date dateToConvert) {
return dateToConvert.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
}

从这里开始,这是一个简单的例子,只需再添加一年......

LocalDate nextBirthDate = toLocalDate(someDate).plusYear(1);

请记住,java.time 对象是不可变的。

最后,如果需要,您可以将 LocalDate 转换回 java.util.Date

public Date toUtilDate(LocalDate dateToConvert) {
return java.util.Date.from(dateToConvert.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant());
}

但这引发了一系列关于您为什么要费心的问题(回到java.util.Date)。一旦您可以退出该 API 并进入较新的 java.time API,您应该尝试留在那里(恕我直言)

nb 来自 Convert Date to LocalDate or LocalDateTime and Back 的日期对话

"from" and "with" seemed the most promising..but ultimately don't support this use case (i.e. cannot give the next instance of LocalDate given a Day and Month)

仍然没有看到问题。以下示例采用原始出生日期、当前出生日期,并根据当前“年份日期”是在今天之前还是之后确定“下一个”出生日期

LocalDate orignalBirthDate = LocalDate.of(1972, Month.MARCH, 8);
LocalDate today = LocalDate.now();
int year = today.getYear();

LocalDate nextBirthDate = orignalBirthDate.withYear(year);
if (nextBirthDate.isBefore(today)) {
nextBirthDate = nextBirthDate.plusYears(1);
}

System.out.println("Next birthday = " + DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(nextBirthDate));

关于java - 给定出生日期计算下一个生日日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com