ExcelFormulaParser.Engine.Excel.Functions.DateTime.Time.Execute C# (CSharp) Method

Execute() public method

public Execute ( IEnumerable arguments, ParsingContext context ) : CompileResult
arguments IEnumerable
context ParsingContext
return ExcelFormulaParser.Engine.ExpressionGraph.CompileResult
        public override CompileResult Execute(IEnumerable<FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var firstArg = arguments.ElementAt(0).Value.ToString();
            if(arguments.Count() == 1 && TimeStringParser.CanParse(firstArg))
            {
                var result = TimeStringParser.Parse(firstArg);
                return new CompileResult(result, DataType.Time);
            }
            ValidateArguments(arguments, 3);
            var hour = ArgToInt(arguments, 0);
            var min = ArgToInt(arguments, 1);
            var sec = ArgToInt(arguments, 2);

            ThrowArgumentExceptionIf(() => sec < 0 || sec > 59, "Invalid second: " + sec);
            ThrowArgumentExceptionIf(() => min < 0 || min > 59, "Invalid minute: " + min);
            ThrowArgumentExceptionIf(() => min < 0 || hour > 23, "Invalid hour: " + hour);

            var secondsOfThisTime = (double)(hour * 60 * 60 + min * 60 + sec);
            return CreateResult(GetTimeSerialNumber(secondsOfThisTime), DataType.Time);
        }

Usage Example

 public void TimeShouldThrowExceptionIfSecondsIsOutOfRange()
 {
     var func = new Time();
     var result = func.Execute(FunctionsHelper.CreateArgs(10, 11, 60), _parsingContext);
 }
All Usage Examples Of ExcelFormulaParser.Engine.Excel.Functions.DateTime.Time::Execute