-
获取当前月份需要+1
Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); int month = calendar.get(Calendar.MONTH)+1; calendar.get(Calendar.DATE); //得到当前日
-
计算两个日期的时间间隔
最近计算两个日期间隔出的bug如下:
开始时间:2021-10-02
结束时间:2022-10-01
计算这两个日期的时间间隔,我使用Calendar的方式,如下public statis String intervals(Date startTime, Date endTime){ String year = ""; String month = ""; String day = ""; Calendar startDate = Calendar.getInstance(); startDate.setTime(startTime); Calendar endDate = Calendar.getInstance(); endDate.setTime(endTime); if(startDate.after(endDate)){ return ""; } year = endDate.get(Calendar.YEAR) - startDate.get(Calendar.YEAR) == 0?"": endDate.get(Calendar.YEAR) - startDate.get(Calendar.YEAR)+"年"; month = endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH) == 0 ?"": endDate.get(Calendar.MONTH) - startDate.get(Calendar.MONTH) + "月"; day = endDate.get(Calendar.DATE) - startDate.get(Calendar.DATE) == 0 ?"": endDate.get(Calendar.DATE) - startDate.get(Calendar.DATE) + "月"; return year + month + day; }
使用以上方法得到的结果是 1年-1天 (是-1天),因为Calendar计算日期间隔的方式是年月日分开以数字的形式相减;如果想得到正确的时间间隔的年月日需要用以下方式;使用
Period.between()
方法,传入两个LocalDate类型的日期,得到时间间隔;public static String intervals(String date1, String date2){ if(null == date1 || null date2){ return ""; } //String转换为localDate // private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startTime = LocalDate.parse(date1,dtf); LocalDate endTime = LocalDate.parse(date2,dtf); if(startTime.isAfter(endTime)){ return ""; } Period between = Period.between(startTime,endTime); String years = between.getYears() == 0 ?"":between.getYears() + "年"; String month = between.getMonths() == 0? "":between.getMonths() + "月"; String days = between.getDays() == 0?"":between.getDays() + "天"; return years + month + days; }
calendar的两点注意事项,不注意会犯的错
于 2022-07-21 14:24:55 首次发布