2013-03-27 64 views
3

我在项目中使用NCalc。有没有办法做的日期操作,如NCalc日期操作

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

我不能似乎能够产生结果。

Expression.Evaluate(); 

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

回答

3

不,NCalc库不允许这样做。

Read此相关主题。

但是你可以做NCalc。

假设ab的类型是DateTime,(a - b).TotalDays将返回天数。

+0

谢谢,但我需要NCalc,因为我需要为GUI上的最终用户提供表达式编辑选项。你的链接真的很有用。 – Daniel 2013-03-27 17:00:44

+0

我很高兴我帮你。 – 2013-03-27 17:22:52

-1
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

5

如果你很乐意创建一个自定义函数,你可以很容易地在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());