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)); } }
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)); } }
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)); } }