计算工具类

计算工具类:

package com.test.common.utils;

import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;

import java.time.Duration;
import java.util.Date;
import java.util.Objects;

/**
 * 计算工具类
 */
@Component
public class CalculationUtils {

    /**
     * 天毫秒数
     */
    private final long dayMillis = Duration.ofDays(1).toMillis();

    /**
     * 小时毫秒数
     */
    private final long hourMillis = Duration.ofHours(1).toMillis();

    /**
     * 分钟毫秒数
     */
    private final long minuteMillis = Duration.ofMinutes(1).toMillis();

    /**
     * 秒毫秒数
     */
    private final long secondMillis = Duration.ofSeconds(1).toMillis();

    public String calcDuration(@NonNull Date start, Date end,String... args) {
        if(args.length == 0){
            return this.calcDurationSecond(start,end);
        }else if("1".equals(args[0])){
            return this.calcDurationMinute(start,end);
        }
        return "0";
    }

        /**
         * 计算时长:精确到分
         * @param start
         * @param end
         */
    public String calcDurationMinute(@NonNull Date start, Date end) {
        Date endDate = Objects.nonNull(end) ? end : new Date();

        // 差额
        long diff = endDate.getTime() - start.getTime();

        // 天数
        long days = diff / dayMillis;

        // 小时
        long hours = diff % dayMillis / hourMillis;

        // 分钟
        long minutes = diff % dayMillis % hourMillis / minuteMillis;

        if (diff > dayMillis) {
            // 大于24小时
            return String.format("%s天%s小时%s分钟", days, hours, minutes);
        } else if (diff < hourMillis) {
            // 小于1小时
            return String.format("%s分钟", minutes);
        } else {
            return String.format("%s小时%s分钟", hours, minutes);
        }
    }

    /**
     * 计算时长:精确到秒
     * @param start
     * @param end
     */
    public String calcDurationSecond(@NonNull Date start, Date end) {
        Date endDate = Objects.nonNull(end) ? end : new Date();

        // 差额
        long diff = endDate.getTime() - start.getTime();

        // 天数
        long days = diff / dayMillis;

        // 小时
        long hours = diff % dayMillis / hourMillis;

        // 分钟
        long minutes = diff % dayMillis % hourMillis / minuteMillis;

        // 秒
        long seconds = diff % dayMillis % hourMillis % minuteMillis / secondMillis;

        if (diff > dayMillis) {
            // 大于24小时
            return String.format("%s天%s小时%s分钟%s秒", days, hours, minutes, seconds);
        } else if (diff > hourMillis) {
            // 小于1小时
            return String.format("%s小时%s分钟%s秒", hours, minutes, seconds);
        } else if (diff > minuteMillis) {
            // 小于1分钟
            return String.format("%s分钟%s秒", minutes, seconds);
        } else {
            return String.format("%s秒", seconds);
        }
    }

}

你可能感兴趣的:(java)