gpt4 book ai didi

string - Groovy:从字符串计算的时间减法

转载 作者:行者123 更新时间:2023-12-01 02:26:30 25 4
gpt4 key购买 nike

我的脚本从文件中读取一个字符串并对其进行评估,使其在 TimeCategory 中用作 TimeDuration。如果字符串以“-”开头,则会抛出异常。

我的简化脚本:

import groovy.time.TimeCategory;

String string = "-1.day"
Date now = new Date()
use(TimeCategory)
{
def x = new Date() + evaluate(string)
println x
}

抛出:
groovy.lang.MissingMethodException: No signature of method: groovy.time.Duration.negative() is applicable for argument types: () values: []
Possible solutions: notify()

目前我的解决方案是这样的:
import groovy.time.TimeCategory;

String string = "-1.day"
Date now = new Date()
use(TimeCategory)
{
def x
if(string.startsWith("-"))
{
string = string.substring(1)
x = now - evaluate(string)
}
else
{
x = now + evaluate(string)
}
println x
}

虽然它可以执行以下操作。但是……我不喜欢。我不确定后果(它是否适用于不同的时间单位?“-1.day+2.hours-3.minutes”):
String prestring = "-1.day"
String string = "0.day$prestring"

有什么建议?

最佳答案

问题是操作中的计算顺序:
-1.day相当于 -(1.day) , 或 (1.day).negative()
要解决此问题,您可以先应用括号来计算减号运算符:
(-1).day
另一种解决方案是添加一个 negative()方法到 Duration类(class)。

Duration.metaClass.negative = { -> 
new Duration(-delegate.days,
-delegate.hours,
-delegate.minutes,
-delegate.seconds,
-delegate.millis)
}

关于string - Groovy:从字符串计算的时间减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com