我正在创建一个Calendar实例,并将日期设置为 1997年7月1日,如下所示:
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(1997, 6, 1);
我想要做的是,在不使用外部库的情况下,从当前日期之前(例如2015年11月1日)获取该日期的以下输出(正确计算闰年/秒将是好的,但不是必需的)二时45分30秒):
18年,4个月,0天,2小时,45分钟,30秒
我不太确定这是否可行。我尝试了一些奇怪的,不是非常合乎逻辑的计算,需要进行大量的改进,但无法使其正常工作:
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)));
答案 0 :(得分:0)
如果您使用的是java 8,那么您可以使用LocalDateTime和PlainTimeStamp类
在这里您可以找到一些答案Java 8: Calculate difference between two LocalDateTime
答案 1 :(得分:0)
这可能会有所帮助
Calendar startCalendar = Calendar.getInstance();
startCalendar.clear();
startCalendar.set(1997, 6, 1);
Date start = startCalendar.getTime();
Calendar endCalendar = Calendar.getInstance();
// endCalendar.clear();
// endCalendar.set(2015, 10, 1);
Date end = endCalendar.getTime();
long diff = end.getTime() - start.getTime();
long days = TimeUnit.MILLISECONDS.toDays(diff);
long hours = TimeUnit.MILLISECONDS.toHours(diff) % TimeUnit.DAYS.toHours(1);
long minutes = TimeUnit.MILLISECONDS.toMinutes(diff) % TimeUnit.HOURS.toMinutes(1);
long seconds = TimeUnit.MILLISECONDS.toSeconds(diff) % TimeUnit.MINUTES.toSeconds(1);
System.out.println(days + " " + hours + " " + minutes + " " + seconds);
从我们可以编写逻辑的日子里找到使用模数除法的闰年数,月数
Java 8有一个新的Date API
,你也可以尝试使用Java 8