【问题标题】:Compare dates using javascript engine使用 javascript 引擎比较日期
【发布时间】:2012-07-13 19:31:03
【问题描述】:

我正在使用 Javascript 引擎来比较值。值可以是双精度或日期。 (字符串)

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。请帮忙。

【问题讨论】:

    标签: java date compare


    【解决方案1】:

    你应该这样做:

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

    在您的脚本中,2012 年 12 月 31 日将被解释为数学表达式。

    您想做的测试的另一种可能性是:

    engine.eval("var test = dateValue <=" + " new Date(2012, 12, 31);")
    Object myBoolean = engine.get("test");
    

    【讨论】:

    • 感谢您的回复。我试过这个,但它在线程“main” com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.EvaluatorException: missing ; 第 1 行的 before 语句 (#1)
    • 否则你可以把这个值赋给一个变量,然后通过引擎对象获取变量的值。
    • 你太棒了,它奏效了。非常感谢您的帮助。上帝保佑你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多