我的简化脚本:
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天
另一种解决方案是在Duration类中添加negative()方法.
Duration.MetaClass.negative = { -> new Duration(-delegate.days,-delegate.hours,-delegate.minutes,-delegate.seconds,-delegate.millis) }总结
以上是内存溢出为你收集整理的Groovy:从字符串计算的Timeduration-Subtraction全部内容,希望文章能够帮你解决Groovy:从字符串计算的Timeduration-Subtraction所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)