一个程序员自学中

日期与时间戳转换扩展

2019-10-21  本文已影响0人  小船翻不翻

.net环境下转换


    /// <summary>
    /// 时间扩展
    /// </summary>
    public static class DateTimeExtension
    {
        /// <summary>
        /// 1970.1.1 UTC时间
        /// </summary>
        private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

        /// <summary>
        /// 日期转换为时间戳(默认为13位毫秒时间戳)
        /// </summary>
        /// <param name="dateTime">日期</param>
        /// <param name="isMilli">是否毫秒</param>
        /// <returns></returns>
        public static long ConvertToTimeStamp(this DateTime dateTime, bool isMilli = true)
        {
            TimeSpan timeSpan = dateTime.AddHours(-8.0) - DateTimeExtension.Jan1st1970;
            return (long)(isMilli ? timeSpan.TotalMilliseconds : timeSpan.TotalSeconds);
        }

        /// <summary>
        /// 时间戳转换为日期(时间戳单位:默认毫秒)
        /// </summary>
        /// <param name="timeStamp">时间戳</param>
        /// <param name="isMilli">是否毫秒时间戳</param>
        /// <returns></returns>
        public static DateTime ConvertToDateTime(this long timeStamp, bool isMilli = true)
        {
            return (isMilli ? DateTimeExtension.Jan1st1970.AddMilliseconds((double)timeStamp) : DateTimeExtension.Jan1st1970.AddSeconds((double)timeStamp)).AddHours(8.0);
        }
    }

.net core环境下

 /// <summary>
    /// Datetime扩展
    /// </summary>
    public static class DateTimeExtension
    {
        /// <summary>
        /// 日期转换为时间戳(默认为13位毫秒时间戳) 
        /// </summary>
        /// <param name="dateTime">日期</param>
        /// <param name="isMilli">是否毫秒</param>
        /// <returns></returns>
        public static long ConvertToTimeStamp(this DateTime dateTime, bool isMilli = true)
        {
            return isMilli ? new DateTimeOffset(dateTime).ToUnixTimeMilliseconds()
                : new DateTimeOffset(dateTime).ToUnixTimeSeconds();
        }

        /// <summary>
        /// 时间戳转换为日期(时间戳单位:默认毫秒)
        /// </summary>
        /// <param name="timeStamp">时间戳</param>
        /// <param name="isMilli">是否毫秒时间戳</param>
        /// <returns></returns>
        public static DateTime ConvertToDateTime(this long timeStamp, bool isMilli = true)
        {
            return isMilli ? DateTimeOffset.FromUnixTimeMilliseconds(timeStamp).DateTime
                 : DateTimeOffset.FromUnixTimeSeconds(timeStamp).DateTime;
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读