首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中,如何根据给定的年数、月数和日数获取出生日期?

在java中,如何根据给定的年数、月数和日数获取出生日期?
EN

Stack Overflow用户
提问于 2019-10-17 19:26:15
回答 5查看 275关注 0票数 1

给定一个人的年份、月份和日期,需要获取出生日期-例如-19年1月2日16-2010年9月16日(已手动计算,可能不准确)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-10-17 19:30:32

代码语言:javascript
运行
复制
LocalDateTime.now().minusYears(years).minusMonths(months).minusDays(days)
票数 4
EN

Stack Overflow用户

发布于 2019-10-17 19:41:11

基本上,您可以使用用于日期和时间java.time的现代API,尤其是类LocalDate。它具有添加或减去时间单位的方法,如日、月和年。

代码语言:javascript
运行
复制
public static void main(String[] args) {
    System.out.println("Imagine someone being 19 years, 1 months and 2 days old today...");
    LocalDate birthday = getBirthdayFromAge(19, 1, 2);
    System.out.println("Then this person was born on "
                        + birthday.format(DateTimeFormatter.ISO_DATE));
}

public static LocalDate getBirthdayFromAge(int years, int months, int days) {
    return LocalDate.now()
            .minusDays(days)
            .minusMonths(months)
            .minusYears(years);
}

下面的输出

代码语言:javascript
运行
复制
Imagine someone being 19 years, 1 months and 2 days old today...
Then this person was born on 2000-09-15
票数 2
EN

Stack Overflow用户

发布于 2019-10-17 19:49:58

我会选择java.time.LocalDatejava.time.Period类。调用minus方法可能不是最优的,因为它将为每个方法调用创建新的对象(像LocalDateLocalDateTime这样的类是不可变的):

代码语言:javascript
运行
复制
Period period = Period.of(19, 1, 2); //period of 19 years, 1 month, 2 days
LocalDate birthday = LocalDate.now().minus(period); // compute the birthday

String formattedDate = birthday.format(DateTimeFormatter.ofPattern("dd-MMMM-YYYY", Locale.UK));
System.out.println(formattedDate);

输出为:

代码语言:javascript
运行
复制
15-September-2000
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58431536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档