package com.yuyu.srdisassemble.utils;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 峰。
 * @version 1.0
 * @project SrDisassemble
 * @date 2024/6/19 21:24:25
 * @description 用于计算时间
 */
public class MinUtil {


    /**
     * 计算得出产物的时间
     * @param minutesToAdd
     * @return
     */
    public static LocalDateTime calculateTimeAfterMinutes(int minutesToAdd) {
        LocalDateTime currentTime = LocalDateTime.now();
        // 使用plusMinutes方法添加分钟数
        LocalDateTime futureTime = currentTime.plusMinutes(minutesToAdd);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        futureTime.format(formatter);
        return futureTime;
    }

    /**
     * 计算得出产物需要的时间,注意此处返回的可能是负数
     * @param givenTime
     * @return
     */
    public static int calculateMinutesDifference(LocalDateTime givenTime) {
        // 获取当前时间
        LocalDateTime currentTime = LocalDateTime.now();

        // 计算两个时间之间的Duration
        Duration duration = Duration.between(currentTime, givenTime);

        // 获取Duration中的分钟数（注意：Duration的toMinutes方法返回的是总分钟数，包括天数、小时等转换过来的分钟）
        int minutes =(int) duration.toMinutes();

        // 如果givenTime在currentTime之后，则duration是负数，我们需要取绝对值
        // 但实际上我们可能想要返回负数来表示givenTime在未来
        // 这里取决于你的需求，是返回绝对值还是实际值
        // 如果要返回绝对值，则使用Math.abs(minutes)

        // 返回分钟数
        return minutes;
    }
}
