public static string GetUnits(this SymbolicExpression sexp)
        {
            string units = null;

            if (sexp.GetAttributeNames().Any(p => string.Equals("units", p)))
            {
                units = sexp.GetAttribute("units").AsCharacter().FirstOrDefault();
            }

            switch (units)
            {
            case WEEKS:
                return(WEEKS);

            case DAYS:
                return(DAYS);

            case HOURS:
                return(HOURS);

            case MINS:
                return(MINS);

            default:
                return(SECS);
            }
        }
        public static TimeZoneInfo GetWindowsTimezone(this SymbolicExpression sexp)
        {
            if (sexp.GetAttributeNames().Any(p => string.Equals("tzone", p)))
            {
                var tzone = sexp.GetAttribute("tzone").AsCharacter().ToArray().FirstOrDefault();
                return(tzone.GetWindowsTimezone());
            }

            return(TimeZoneInfo.Local);
        }
 public static bool IsPosixlt(this SymbolicExpression sexp)
 {
     return(sexp.GetAttributeNames().Any(p => string.Equals("class", p)) &&
            sexp.GetAttribute("class").AsCharacter().ToArray().Any(p => string.Equals("POSIXlt", p)));
 }
 public static bool IsDiffTime(this SymbolicExpression sexp)
 {
     return(sexp.GetAttributeNames().Any(p => string.Equals("class", p)) &&
            sexp.GetAttribute("class").AsCharacter().ToArray().Any(p => string.Equals("difftime", p)));
 }