问题:获取两个日期之间的日历天数差异。例如,6/28/1996年23:59与6/29/1996 12:00相差一天。
研究:我在网上做了很多研究,每个人似乎只给出了毫秒的差异,这给你时间的真正差异,但不是在日历日。
当前解决方案
(int) ((new java.sql.Date(System.currentTimeMillis()).getTime()/day_conversion)) - (int) (rs.getDate("attempt_time").getTime()/day_conversion) > 0
我将转换为日期(因此丢弃任何小数)的日期的int转换为当前时间和记录时间并取得差异。这让我得到了日历日的实际转换;但是,我想知道是否只有一种书面方法可以为我做这件事。
答案 0 :(得分:5)
自Java 8以来,存在java.time
API,取代java.util.Date
及相关类,并提供了解决问题的非常简洁的方法:
LocalDateTime date1 = LocalDateTime.of(1996, 6, 28, 23, 59);
LocalDateTime date2 = LocalDateTime.of(1996, 6, 29, 12, 59);
Period difference = Period.between(date1.toLocalDate(), date2.toLocalDate());
System.out.println(difference.getDays());
答案 1 :(得分:0)
这是计算年份差异的另一种方法。您可以非常轻松地添加剩余的日期。
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR);
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.YEAR, 2013);
int com = c.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
System.out.println(com);