编辑代码

import java.text.SimpleDateFormat

def calculateTimeBasedValue(String xc_maxtime, String xc_mintime) {
    // 定义日期格式
    def dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
    // 将输入的字符串转换为日期对象
    def maxDate = dateFormat.parse(xc_maxtime)
    def minDate = dateFormat.parse(xc_mintime)
    println("maxDate: " + maxDate)
    println("minDate: " + minDate)

    // 计算两个日期之间的时间差,单位为毫秒
    def diffInMillis = maxDate.time - minDate.time
    println("diffInMillis: " + diffInMillis)

    // 计算两个日期之间的时间差,单位为小时
    def diffInHours = diffInMillis / (1000 * 60 * 60)
    println("diffInHours: " + diffInHours)

    // 提取小时、分钟和秒
    def maxHour = maxDate.getHours()
    def maxMinute = maxDate.getMinutes()
    def maxSecond = maxDate.getSeconds()
    def minHour = minDate.getHours()
    def minMinute = minDate.getMinutes()
    def minSecond = minDate.getSeconds()

    println("maxTime: ${maxHour}:${maxMinute}:${maxSecond}")
    println("minTime: ${minHour}:${minMinute}:${minSecond}")

    // 根据 xc_maxtime 与 12:00:00 对比确定要加的值
    def maxTimeAddValue
    if (maxHour > 12 || (maxHour == 12 && (maxMinute > 0 || maxSecond > 0))) {
        maxTimeAddValue = 1
    } else {
        maxTimeAddValue = 0.5
    }
    println("maxTimeAddValue: " + maxTimeAddValue)

    // 根据 xc_mintime 与 12:00:00 对比确定要加的值
    def minTimeAddValue
    if (minHour > 12 || (minHour == 12 && (minMinute > 0 || minSecond > 0))) {
        minTimeAddValue = 0.5
    } else {
        minTimeAddValue = 1
    }
    println("minTimeAddValue: " + minTimeAddValue)

    if (diffInHours <= 12) {
        def result = maxTimeAddValue + minTimeAddValue - 1
        println("Time difference <= 12 hours, result: " + result)
        return result
    } else {
        def daysDiff = Math.round(diffInHours / 24)
        println("daysDiff: " + daysDiff)
        // 将 diffInHours 转换为 double 类型再进行取模操作,并四舍五入
        def remainingHours = Math.round(diffInHours.toDouble() % 24)
        println("remainingHours: " + remainingHours)

        if (remainingHours > 0) {
            // 如果有剩余时间,将其按照规则处理
            def result = daysDiff + maxTimeAddValue + minTimeAddValue - 1
            println("Time difference > 12 hours, remaining hours > 0, result: " + result)
            return result
        } else {
            def result = daysDiff + maxTimeAddValue + minTimeAddValue
            println("Time difference > 12 hours, remaining hours = 0, result: " + result)
            return result
        }
    }
}

// 调用函数计算结果
def xc_maxtime="2024-12-24 17:19:33"
def xc_mintime="2024-12-19 07:50:50"
def result = calculateTimeBasedValue(xc_maxtime, xc_mintime)