当前位置: 代码迷 >> 综合 >> java常用时间工具方法
  详细解决方案

java常用时间工具方法

热度:62   发布时间:2024-02-06 09:59:40.0

1、获取两个时间之间的天数、周数、月数(最小单位为天)有三种实现方式:calendar的date日期获取出来,通过until方法获取之间的差距;转化为毫秒数,再除以一天得毫秒数;字符串的date日期获取然后until获取差距,其中通过java的微基准测试发现方式2的性能最好,方式3的性能最差

    public static int getMonthsDiff(Date startDate, Date endDate) {Calendar calendar = Calendar.getInstance(Locale.CHINA);calendar.setTime(startDate);Calendar calendar2 = Calendar.getInstance(Locale.CHINA);calendar2.setTime(endDate);Integer startYear = calendar.get(Calendar.YEAR);Integer startMonth = calendar.get(Calendar.MONTH)+1;Integer startDay = calendar.get(Calendar.DATE);Integer endYear = calendar2.get(Calendar.YEAR);Integer endMonth = calendar2.get(Calendar.MONTH)+1;Integer endDay = calendar2.get(Calendar.DATE);LocalDate endLocalDate = LocalDate.of(endYear,endMonth,endDay);LocalDate startLocalDate = LocalDate.of(startYear,startMonth,startDay);return (int) startLocalDate.until(endLocalDate, ChronoUnit.MONTHS);}

其中修改最后一行代码的 ChronoUnit.MONTHS为其它参数则可统计两个时间之差的天或者周了

// 计算两个日期相隔的天数  public int nDaysBetweenTwoDate(Date firstString, Date secondString) {   int nDay = (int) ((secondDate.getTime() - firstDate.getTime()) / (24 * 60 * 60 * 1000));  return nDay;  }  
        String[] startStr = new SimpleDateFormat("yyyy-MM-dd").format(startDate).split("-");String[] endStr = new SimpleDateFormat("yyyy-MM-dd").format(endDate).split("-");Integer startYear = Integer.parseInt(startStr[0]);Integer startMonth = Integer.parseInt(startStr[1]);Integer startDay = Integer.parseInt(startStr[2]);Integer endYear = Integer.parseInt(endStr[0]);Integer endMonth = Integer.parseInt(endStr[1]);Integer endDay = Integer.parseInt(endStr[2]);LocalDate endLocalDate = LocalDate.of(endYear,endMonth,endDay);LocalDate startLocalDate = LocalDate.of(startYear,startMonth,startDay);return startLocalDate.until(endLocalDate, ChronoUnit.MONTHS);