我在一个项目中使用NCalc。有没有办法像
那样进行日期操作#16/02/2013# - #15/02/2013#= 1
我似乎无法产生结果。
Expression.Evaluate();
上述表达式的结果为空。我可以比较两个日期,但有没有办法使用NCalc对它们进行操作?
答案 0 :(得分: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());
答案 1 :(得分:3)
答案 2 :(得分:1)
这对聚会来说很晚,但是我为NCalc建立了一个名为Expressive的替代选项。也可以使用nuget package。
它最初是为匹配NCalcs功能而构建的,因此迁移只需要少量的工作。
您可以执行更多与日期相关的功能:
DaysBetween(#15/02/2013#, #16/02/2013#)
答案 3 :(得分:-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;