.net core 使用TimeZoneInfo类的时间与时间戳转换

由于TimeZone类已经过时,官方推荐使用TimeZoneInfo来做时间的转换。

1、时间转换成时间戳

        /// <summary>
        /// 将c# DateTime时间格式转换为Unix时间戳格式
        /// </summary>
        /// <param name="time">时间</param>
        /// <returns>double</returns>
        private static double ConvertDateTimeInt(DateTime time)
        {
            DateTime dd = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            TimeSpan ts = (time - dd);
            return (Int64)ts.TotalMilliseconds;
        }

2、时间戳转换成时间(时间戳类型为string)

        /// <summary>        
        /// 时间戳转为C#格式时间        
        /// </summary>        
        /// <param name=”timeStamp”></param>        
        /// <returns></returns>        
        public static DateTime ConvertStringToDateTime(string timeStamp)
        {
            DateTime dtStart = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), TimeZoneInfo.Local);
            long lTime = long.Parse(timeStamp + "0000");
            TimeSpan toNow = new TimeSpan(lTime);
            return dtStart.Add(toNow);
        }

注意在new DateTime时需要添加DateTimeKind.Utc,否则转出来的时间会少8个小时。

原文地址:https://www.cnblogs.com/longdunxiong/p/14412047.html