Example #1
0
        public static FormulaValue TimeParse(EvalVisitor runner, SymbolContext symbolContext, IRContext irContext, StringValue[] args)
        {
            var str = args[0].Value;

            if (TimeSpan.TryParse(str, runner.CultureInfo, out TimeSpan result))
            {
                return(new TimeValue(irContext, result));
            }
            else
            {
                return(CommonErrors.InvalidDateTimeError(irContext));
            }
        }
Example #2
0
        public static FormulaValue DateParse(EvalVisitor runner, SymbolContext symbolContext, IRContext irContext, StringValue[] args)
        {
            var str = args[0].Value;

            if (DateTime.TryParse(str, runner.CultureInfo, DateTimeStyles.None, out DateTime result))
            {
                return(new DateValue(irContext, result.Date));
            }
            else
            {
                return(CommonErrors.InvalidDateTimeError(irContext));
            }
        }
Example #3
0
        public static FormulaValue TimeZoneOffset(IRContext irContext, FormulaValue[] args)
        {
            TimeZoneInfo tzInfo = TimeZoneInfo.Local;

            if (args.Length == 0)
            {
                var tzOffsetDays = tzInfo.GetUtcOffset(DateTime.Now).TotalDays;
                return(new NumberValue(irContext, tzOffsetDays * -1));
            }

            switch (args[0])
            {
            case DateTimeValue dtv:
                return(new NumberValue(irContext, tzInfo.GetUtcOffset(dtv.Value.ToUniversalTime()).TotalDays * -1));

            case DateValue dv:
                return(new NumberValue(irContext, tzInfo.GetUtcOffset(dv.Value.ToUniversalTime()).TotalDays * -1));

            default:
                return(CommonErrors.InvalidDateTimeError(irContext));
            }
        }