예제 #1
0
        /// <summary>
        /// Converts an <see cref="IComparable"/> to DateTime
        /// </summary>
        /// <param name="c">The IComparable.</param>
        /// <returns></returns>
        public static DateTime ToDateTime(this IComparable c)
        {
            if (c is DateTime)
            {
                return((DateTime)c);
            }

            if (c is TimeSpan)
            {
                return(new DateTime(((TimeSpan)c).Ticks));
            }

            if (c.IsDefined())
            {
                long localTicks = NumberUtil.Constrain((long)Convert.ChangeType(c, typeof(long), CultureInfo.InvariantCulture), DateTime.MinValue.Ticks, DateTime.MaxValue.Ticks);
                return(new DateTime(localTicks));
            }

            return(new DateTime());
        }