Java 从android上的天数中获取年、月、日

Java 从android上的天数中获取年、月、日,java,android,jodatime,Java,Android,Jodatime,我想以年、月、日的形式获得年龄;像这样,x年y月z天 我可以用这几天时间: LocalDate birthdate = new LocalDate (dob_yr, dob_mt, dob_dy); LocalDate now = new LocalDate(); Days nm_days = Days.daysBetween(birthdate, now); 我尝试使用Log.d(“days”,nm_days.getDays()+)这就是我得到的:10365 如何将日转换为年、月和日格式 编

我想以年、月、日的形式获得年龄;像这样,
x年y月z天

我可以用这几天时间:

LocalDate birthdate = new LocalDate (dob_yr, dob_mt, dob_dy);
LocalDate now = new LocalDate();
Days nm_days = Days.daysBetween(birthdate, now);
我尝试使用
Log.d(“days”,nm_days.getDays()+)这就是我得到的:
10365
如何将日转换为年、月和日格式

编辑

嗯。现在我得到了一些东西,但仍然不能真正解决我的问题,这里是:

Days a = Days.daysBetween(birthdate, now);
Months b = Months.monthsBetween(birthdate, now);
Years c = Years.yearsBetween(birthdate, now);

Period g = new Period(b);
PeriodFormatter dhm = new PeriodFormatterBuilder()
    .appendYears()
    .appendSuffix(" years", " years")
    .appendSeparator(" and ")
    .appendMonths()
    .appendSuffix(" months", " months")
    .appendSeparator(" and ")
    .appendDays()
    .appendSuffix(" day", " days")
    .toFormatter();

Log.d("age", dhm.print(g.normalizedStandard()));
当我尝试这样做时,我得到了
28年零4个月的
,但如果我尝试了
Period g=新时期(a)我只有
5天
应该是
28年零4个月零17天

一般来说,您需要:

年龄:28岁4个月17天


通常,这将获取您的区域设置,或者您可以显式地将区域设置传递给。不幸的是,Joda似乎没有本地化为印度尼西亚。你可以像你的问题一样制作你自己的格式化程序,或者(如果你有更多的时间,想要一份好的简历,等等)考虑为Joda制作一个印尼本地化版本。

要获得
int
的天数,你需要使用
nm_days.getDays()
@a--C,谢谢,但我仍然无法将天转换为年、月和日的格式,将天除以365以获得多少年;然后执行
days%365
以获取剩余天数;如果你想处理闰年,你必须做一些更复杂的逻辑。没有唯一的解决方案。例如,32天可以是1个月1天(如果一个月有31天)或1个月4天(如果一个月有28天)。这很好,但是我可以设置为没有“-”吗?我更喜欢4个月29天而不是5个月1天,我能把它改成我的语言吗?我是印尼人
Period period = new Period(birthdate, now);
Log.d("age", PeriodFormat.wordBased().print(period));