当前位置 博文首页 > 逐墨飞扬的博客:Joda-Time 计算两个时间差(年,月,星期,日,

    逐墨飞扬的博客:Joda-Time 计算两个时间差(年,月,星期,日,

    作者:[db:作者] 时间:2021-07-12 15:45

    计算方法

    import org.joda.time.DateTime;
    import org.joda.time.Interval;
    import org.joda.time.Period;
    import org.joda.time.format.DateTimeFormat;
    import org.joda.time.format.DateTimeFormatter;
    
    public class DiffDateTime {
    	/**
         * Joda-Time 计算两个时间差(年,月,星期,日,小时,分钟,秒,毫秒)   注: 开始时间 和 结束时间 格式须相同
         * @param startDateTime     开始时间
         * @param endDateTime       结束时间
         * @param dateTimeType      时间格式(2018年01月20日 21:02:37(yyyy年MM月dd日 HH:mm:ss))
         */
        public static void calculateTimeDifference(String startDateTime, String endDateTime, String dateTimeType) {
    
            DateTimeFormatter format = DateTimeFormat.forPattern(dateTimeType);
            DateTime dateTimeStart = format.parseDateTime(startDateTime);
            DateTime dateTimeEnd = format.parseDateTime(endDateTime);
    
            if (dateTimeStart.isAfter(dateTimeEnd)) {
                DateTime temp = dateTimeStart;
                dateTimeStart = dateTimeEnd;
                dateTimeEnd = temp;
            }
    
            Interval interval = new Interval(dateTimeStart.getMillis(), dateTimeEnd.getMillis());
            Period p = interval.toPeriod();
            System.out.println(p.toString());
            System.out.printf("两个日期的时间差:%d 年 %d 个月 %d 星期 %d 天 %d 小时 %d 分钟 %d 秒 %d 毫秒\n",
                    p.getYears(), p.getMonths(), p.getWeeks(), p.getDays(), p.getHours(), p.getMinutes(), p.getSeconds(), p.getMillis());
    
        }
    }
    

    注: 开始时间 和 结束时间 格式 必须相同

    使用方式

    public static void main(String[] args) {
            calculateTimeDifference("2018年01月20日 21:02:37", "2019年03月01日 13:24:46", "yyyy年MM月dd日 HH:mm:ss");
            calculateTimeDifference("2018年01月27日", "2019年03月07日", "yyyy年MM月dd日");
            calculateTimeDifference("2019年03月01日", "2018年01月20日", "yyyy年MM月dd日");
        }
    

    输出结果

    P1Y1M1W1DT16H22M9S
    两个日期的时间差:1 年 1 个月 1 星期 1 天 16 小时 22 分钟 9 秒 0 毫秒
    P1Y1M1W1D
    两个日期的时间差:1 年 1 个月 1 星期 1 天 0 小时 0 分钟 0 秒 0 毫秒
    P1Y1M1W2D
    两个日期的时间差:1 年 1 个月 1 星期 2 天 0 小时 0 分钟 0 秒 0 毫秒
    
    cs
    下一篇:没有了