net core 时间戳获取

在 .net 4.6 和 .net core  下,  DateTimeOffset  新增了一个  ToUnixTimeSeconds() 方法,可以直接获取时间戳。

DateTimeOffset dto = new DateTimeOffset(DateTime.Now);
var unixTime = dto.ToUnixTimeSeconds();

 

扩展:

        /// <summary>
        ///   时间戳转本地时间
        /// </summary> 
        public static DateTime ToLocalTimeTime(this long unix, bool allowZero = false)
        {
            if (!allowZero && unix <= 0)
                throw new ArgumentException("时间戳值为 0 。", nameof(unix));

            var dto = DateTimeOffset.FromUnixTimeSeconds(unix);
            return dto.ToLocalTime().DateTime;
        }

        /// <summary>
        ///   时间戳转本地时间
        /// </summary> 
        public static DateTime ToLocalTimeTime(this long unix)
        {
            var dto = DateTimeOffset.FromUnixTimeSeconds(unix);
            return dto.ToLocalTime().DateTime;
        }

        /// <summary>
        ///   时间转时间戳转
        /// </summary> 
        public static long ToUnixTimestamp(this DateTime dt)
        {
            DateTimeOffset dto = new DateTimeOffset(dt);
            return dto.ToUnixTimeSeconds();
        }

 

原 NFX 下 获取和转换:

        /// <summary>
        ///  转换为时间戳
        /// </summary> 
        public static long ToUnixtime(this DateTime dt)
        {
            var start = new DateTime(1970, 1, 1);
            return (long)dt.ToUniversalTime().Subtract(start).TotalSeconds;
        }

        /// <summary>
        ///  转时间
        /// </summary> 
        public static DateTime ToDateTime(this long unix)
        {
            if (unix <= 0)
                return DateTime.MinValue;

            var start = new DateTime(1970, 1, 1);
            return start.AddSeconds(unix).ToLocalTime();
        }



 

添加评论

Loading