使用javascript引擎比较日期

时间:2012-07-13 19:31:03

标签: java date compare

我正在使用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。请帮忙。

1 个答案:

答案 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");