4

私のスクリプトはファイルから文字列を読み取り、それを評価して 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"

助言がありますか?

4

1 に答える 1