0

値を比較するためにJavascriptエンジンを使用しています。値は double または date にすることができます。(弦)

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
// Date value is populated dynamically here
engine.eval("dateValue = " + "01/02/2012");
// The condition is populated dynamically here
if ((Boolean) engine.eval("dateValue <=" + "12/31/2012")) { 
  System.out.println("TRUE");
} else {
    System.out.println("FALSE");
}

上記のコードは double 値では問題なく動作しますが、日付では間違った結果になります。上記の例では、TRUE と表示されるはずですが、FALSE と表示されます。助けてください。

4

1 に答える 1

1

次のようにする必要があります。

engine.eval("var dateValue = " + "new Date(2012, 02, 01);");
...
if ((Boolean) "dateValue <=" + " new Date(2012, 12, 31);")

スクリプトでは、12/31/2012 は数式として解釈されます。

あなたがやりたいテストの別の可能性は次のようなものです:

engine.eval("var test = dateValue <=" + " new Date(2012, 12, 31);")
Object myBoolean = engine.get("test");
于 2012-07-13T19:33:02.253 に答える