NCalc日期操作
问题描述:
我在项目中使用NCalc。有没有办法做的日期操作,如NCalc日期操作
#16/02/2013# - #15/02/2013#= 1
我不能似乎能够产生结果。
Expression.Evaluate();
上述表达式的结果为空。我可以比较两个日期,但是有没有办法使用NCalc对它们进行操作?
答
DateTime Date1, Date2;
Date1 = DateTime.Parse("2013-03-27 8:42:00");
Date2 = DateTime.Parse("2013-03-27 8:42:26");
TimeSpan TimeSpan1 = Date2 - Date1;
double DayDifference = TimeSpan1.TotalDays;
+1
它与NCalc有什么关系? – Daniel 2013-03-27 14:48:29
+0
不是。这仅仅是在C#中减去日期。 – 2013-03-27 14:51:32
答
如果你很乐意创建一个自定义函数,你可以很容易地在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());
谢谢,但我需要NCalc,因为我需要为GUI上的最终用户提供表达式编辑选项。你的链接真的很有用。 – Daniel 2013-03-27 17:00:44
我很高兴我帮你。 – 2013-03-27 17:22:52