我的脚本从文件中读取一个字符串,并将其评估为在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"
有什么建议?