Пример #1
0
        /// <summary>
        /// 时间戳 -> 本地时间
        /// </summary>
        /// <param name="timestamp"></param>
        /// <param name="accuracy">精度</param>
        /// <returns></returns>
        public static DateTime FromUnixTimestamp(long?timestamp, TimestampAccuracy accuracy = TimestampAccuracy.Seconds)
        {
            if (timestamp == null)
            {
                throw new ArgumentNullException("timestamp");
            }

            if (accuracy == TimestampAccuracy.Milliseconds)
            {
                return((_epoch + TimeSpan.FromMilliseconds((double)timestamp)).ToLocalTime());
            }
            else
            {
                return((_epoch + TimeSpan.FromSeconds((double)timestamp)).ToLocalTime());
            }
        }
Пример #2
0
        /// <summary>
        /// Convert Unix timestamp integer value to DateTime object.
        /// </summary>
        /// <param name="timestamp">signed integer value, specifies Unix timestamp</param>
        /// <returns>DateTime object (represented in local time) based on specified Unix timestamp value</returns>
        /// <exception cref="ArgumentOutOfRangeException">Unix timestamp value can'img_type be converted to DateTime due out of signed int range</exception>
        public static DateTime FromUnixUTCTimestamp(long?timestamp, TimestampAccuracy accuracy = TimestampAccuracy.Seconds)
        {
            if (timestamp == null)
            {
                throw new ArgumentNullException("timestamp");
            }

            // ArgumentAssert.IsGreaterOrEqual(timestamp, 0, Messages.Exception_ArgumentUnixTimestampOutOfRange);
            if (accuracy == TimestampAccuracy.Milliseconds)
            {
                return((_epoch + TimeSpan.FromMilliseconds((double)timestamp)).ToUniversalTime());
            }
            else
            {
                return((_epoch + TimeSpan.FromSeconds((double)timestamp)).ToUniversalTime());
            }
        }
Пример #3
0
        /// <summary>
        /// 本地时间 -> 时间戳
        /// </summary>
        /// <param name="dateTime"></param>
        /// <param name="accuracy">精度</param>
        /// <returns></returns>
        public static long ToUnixTimestamp(DateTime dateTime, TimestampAccuracy accuracy = TimestampAccuracy.Seconds)
        {
            if (dateTime == null)
            {
                throw new ArgumentNullException("dateTime");
            }

            //TimeSpan diff = dateTime.ToLocalTime() - _epoch;
            TimeSpan diff = dateTime - _epoch;

            if (accuracy == TimestampAccuracy.Milliseconds)
            {
                return(Convert.ToInt64(Math.Floor(diff.TotalMilliseconds)));
            }
            else
            {
                return(Convert.ToInt64(Math.Floor(diff.TotalSeconds)));
            }
        }
Пример #4
0
        /// <summary>
        /// Convert DateTime object to Unix timestamp signed integer value.
        /// </summary>
        /// <param name="dateTime">DateTime value to convert</param>
        /// <returns>signed integer value, representing Unix timestamp (represented in UTC) converted from specifed DateTime value</returns>
        /// <exception cref="ArgumentOutOfRangeException">DateTime value can'img_type be converted to Unix timestamp due out of signed int range</exception>
        public static long ToUnixUTCTimestamp(DateTime dateTime, TimestampAccuracy accuracy = TimestampAccuracy.Seconds)
        {
            if (dateTime == null)
            {
                throw new ArgumentNullException("dateTime");
            }

            // ArgumentAssert.IsInRange(dateTime, _epoch, _epochLimit, Messages.Exception_ArgumentDateTimeOutOfRangeUnixTimestamp);
            TimeSpan diff = dateTime.ToUniversalTime() - _epoch;

            if (accuracy == TimestampAccuracy.Milliseconds)
            {
                return(Convert.ToInt64(Math.Floor(diff.TotalMilliseconds)));
            }
            else
            {
                return(Convert.ToInt64(Math.Floor(diff.TotalSeconds)));
            }
        }
Пример #5
0
 /// <summary>
 /// 本地时间.ToUniversalTime() -> 时间戳
 /// </summary>
 /// <param name="dateTime"></param>
 /// <param name="accuracy">精度</param>
 /// <returns></returns>
 public static long ToUnixUTCTimestamp(this DateTime dateTime, TimestampAccuracy accuracy = TimestampAccuracy.Seconds)
 {
     return(DateTimeHelper.ToUnixUTCTimestamp(dateTime, accuracy));
 }