Java计算时间差、日期差总结

Java计算时间差、日期差总结

最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下

1、java 7中的日历类Calendar

Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间;如果想改变时间,可以通过其setTime方法传入一个Date对象,即可获得Date对象所表示时间的Calendar对象

/**
 *使用Calendar对象计算时间差,可以按照需求定制自己的计算逻辑
 * @param strDate
 * @throws ParseException
 */
public static void calculateTimeDifferenceByCalendar(String strDate) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
    Date date = formatter.parse(strDate);

    Calendar c1 = Calendar.getInstance();   //当前日期
    Calendar c2 = Calendar.getInstance();
    c2.setTime(date);   //设置为另一个时间

    int year = c1.get(Calendar.YEAR);
    int oldYear = c2.get(Calendar.YEAR);

    //这里只是简单的对两个年份数字进行相减,而没有考虑月份的情况
    System.out.println("传入的日期与今年的年份差为:" + (year - oldYear));
}

输出为:

传入的日期与今年的年份差为:12

2、java 8中的周期类Period

通过调用Period类的静态方法between,传入两个待比较的LocalDate对象today与oldDate,得到的Period的对象p中就包含了today与oldDate两个日期相差的年、月、日信息,可以通过p.getYears()等方法取出

/**
 * 使用java 8的Period的对象计算两个LocalDate对象的时间差,严格按照年、月、日计算,如:2018-03-12 与 2014-05-23 相差 3 年 9 个月 17 天
 * @param year
 * @param month
 * @param dayOfMonth
 */
public static void calculateTimeDifferenceByPeriod(

你可能感兴趣的:(java基础,java,8,Java计算时间差)