4

プロジェクトで NCalc を使用しています。次のような日付操作を行う方法はありますか

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

結果を出せる気がしない。

Expression.Evaluate();

上記の式の結果は null です。2 つの日付を比較できますが、NCalc を使用してそれらを操作する方法はありますか?

4

4 に答える 4

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());
于 2015-01-21T11:52:24.083 に答える
3

いいえ、NCalcライブラリはこれを許可していません。

この関連トピックをお読みください。

ただし、NCalc がなくても実行できます。

abが 型DateTimeであると仮定すると(a - b).TotalDays、日数が返されます。

于 2013-03-27T14:57:57.770 に答える
-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;
于 2013-03-27T14:42:58.927 に答える