我正在使用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");
}
上面的代码适用于双值,但在日期中给出了错误的结果。对于上面的示例,它应显示TRUE,但显示为FALSE。请帮忙。
答案 0 :(得分: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");