NCalc日期操作

Dan*_*iel 4 c# ncalc

我在一个项目中使用NCalc.有没有办法做日期操作,如

#16/02/2013# - #15/02/2013#= 1

我似乎无法产生结果.

Expression.Evaluate();
Run Code Online (Sandbox Code Playgroud)

对于上述表达式,结果为空.我可以比较两个日期,但有没有办法使用NCalc对它们进行操作?

Chr*_*lsh 8

如果您乐意创建自定义函数,则可以非常轻松地在ncalc中执行此操作.

Expression e = new Expression("DayDiff(#16/02/2013#, #15/02/2013#)");
e.EvaluateFunction += delegate(string name, FunctionArgs args)
{
    if (name == "DayDiff")
    {
        var date1 = args.Parameters[0].Evaluate();
        var date2 = args.Parameters[1].Evaluate();
        var timespan = date2 - date1;
        return timespan.TotalDays; // double (you can convert to int if you wish a whole number!)
    }
}
Console.Write(e.Evaluate());
Run Code Online (Sandbox Code Playgroud)