我正在创建一个日历实例,并将日期设置为1997 年 7 月 1 日,如下所示:
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(1997, 6, 1);
我想要做的是,在不使用外部库的情况下,从当前日期(例如 2015 年 11 月 1 日 02:45:30)之前的该日期获取以下输出(正确计算闰年/秒会很好,但不是必需的):
18 years, 4 months, 0 days, 2 hours, 45 minutes, 30 seconds
我不太确定这是否可能。我尝试了一些奇怪的、不太符合逻辑的计算,需要大量改进,但无法使其工作:
int years = currentYear - calendar.get(Calendar.YEAR);
int months = calendar.get(Calendar.MONTH);
if(currentMonth > months) {
years -= 1;
}
更新 - 到目前为止的代码:
Calendar currentDate = Calendar.getInstance();
currentDate.clear();
Calendar birthDate = Calendar.getInstance();
birthDate.clear();
birthDate.set(this.birthYear, this.birthMonth - 1, this.birthDay);
Calendar date = Calendar.getInstance();
date.clear();
date.setTimeInMillis(birthDate.getTimeInMillis() - currentDate.getTimeInMillis());
System.out.println(Integer.toString(date.get(Calendar.YEAR)));
最佳答案
如果您使用的是 java 8,那么您可以使用 LocalDateTime 和 PlainTimeStamp 类
在这里您可以找到一些答案 Java 8: Calculate difference between two LocalDateTime
关于java - 将日期转换为此格式 : "X years, X months, X days...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458470/