码迷,mamicode.com
首页 > Windows程序 > 详细

C# 时间戳与DateTime互转

时间:2020-09-24 21:22:00      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:cal   col   rgba   returns   div   region   rsa   localtime   表示   

    /// <summary>
    /// 时间戳与DateTime互转
    /// </summary>
    public class TicksTimeConvert
    {
        /*
         * 时间戳10位的是秒,13位的是毫秒
         * 
         * 1秒=1000毫秒
         * 1毫秒=1000微秒
         * 1微秒=1000纳秒,纳秒也叫毫微秒
         * 
         * DateTime.Ticks的单位是100纳秒,
         * 每个计时周期表示一百纳秒,即一千万分之一秒。
         * 此属性的值表示自 0001 年 1 月 1 日午夜 12:00:00(表示 DateTime.MinValue)以来经过的以 100 纳秒为间隔的间隔数。
         * **/


        //1970年1月1号0点0分0秒对应的UTC时间
        public static DateTime InitUTCTime = new DateTime(1970, 1, 1);
        //UTC时间的1970年1月1号0点0分0秒对应的DateTime.Ticks
        public static long InitUTCTicks = InitUTCTime.Ticks;
        //1970年1月1号0点0分0秒对应的本地时间
        public static DateTime InitLocalTime = UTCTime2LocalTime(InitUTCTime);
        //本地时间的1970年1月1号0点0分0秒对应的DateTime.Ticks
        public static long InitLocalTicks = InitLocalTime.Ticks;


        #region 本地时间


        /// <summary>
        /// 获取当前本地时间
        /// </summary>
        /// <returns></returns>
        public static DateTime GetNowLocalTime()
        {
            return DateTime.Now;
        }

        /// <summary>
        /// 获取当前本地时间戳
        /// </summary>
        /// <returns>当前本地时间戳,毫秒</returns>
        public static long GetNowLocalTicks()
        {
            return (DateTime.Now.Ticks - InitLocalTicks) / 10000;
        }

        /// <summary>
        /// 本地时间转本地时间戳
        /// </summary>
        /// <param name="LocalTime">本地时间</param>
        /// <returns>本地时间戳,毫秒</returns>
        public static long LocalTime2LocalTicks(DateTime LocalTime)
        {
            return (LocalTime.Ticks - InitLocalTicks) / 10000;
        }

        /// <summary>
        /// 本地时间戳转本地时间
        /// </summary>
        /// <param name="LocalTicks">本地时间戳,毫秒</param>
        /// <returns>本地时间</returns>
        public static DateTime LocalTicks2LocalTime(long LocalTicks)
        {
            return InitLocalTime.Add(new TimeSpan(LocalTicks * 10000));
        }

        #endregion


        #region UTC时间
        

        /// <summary>
        /// 获取当前UTC时间
        /// </summary>
        /// <returns></returns>
        public static DateTime GetNowUTCTime()
        {
            return DateTime.UtcNow;
        }

        /// <summary>
        /// 获取当前UTC时间戳
        /// </summary>
        /// <returns>当前UTC时间戳,毫秒</returns>
        public static long GetNowUTCTicks()
        {
            return (DateTime.UtcNow.Ticks - InitUTCTicks) / 10000;
        }

        /// <summary>
        /// UTC时间转UTC时间戳
        /// </summary>
        /// <param name="UTCTime"> UTC时间</param>
        /// <returns>UTC时间戳,毫秒</returns>
        public static long UTCTime2UTCTicks(DateTime UTCTime)
        {
            return (UTCTime.Ticks - InitUTCTicks) / 10000;
        }

        /// <summary>
        /// UTC时间戳转UTC时间
        /// </summary>
        /// <param name="UTCTicks">UTC时间戳</param>
        /// <returns>UTC时间,毫秒</returns>
        public static DateTime UTCTicks2UTCTime(long UTCTicks)
        {
            return InitUTCTime.Add(new TimeSpan(UTCTicks * 10000));
        }

        #endregion


        #region 本地和UTC 时间、时间戳互转
        /// <summary>
        /// UTC时间转本地时间
        /// </summary>
        /// <param name="dt">UTC时间</param>
        /// <returns>本地时间</returns>
        public static DateTime UTCTime2LocalTime(DateTime UTCTime)
        {
            return TimeZone.CurrentTimeZone.ToLocalTime(UTCTime);
        }

        /// <summary>
        /// 本地时间转UTC时间
        /// </summary>
        /// <param name="dt">本地时间</param>
        /// <returns>UTC时间</returns>
        public static DateTime LocalTime2UTCTime(DateTime LocalTime)
        {
            return LocalTime.ToUniversalTime();
        }

        /// <summary>
        /// UTC时间转本地时间戳
        /// </summary>
        /// <param name="UTCTime">UTC时间</param>
        /// <returns>本地时间戳,毫秒</returns>
        public static long UTCTime2LocalTicks(DateTime UTCTime)
        {
            return LocalTime2LocalTicks(UTCTime2LocalTime(UTCTime));
        }

        /// <summary>
        /// 本地时间转UTC时间戳
        /// </summary>
        /// <param name="LocalTime">本地时间</param>
        /// <returns>UTC时间戳,毫秒</returns>
        public static long LocalTime2UTCTicks(DateTime LocalTime)
        {
            return UTCTime2UTCTicks(LocalTime2UTCTime(LocalTime));
        }

        /// <summary>
        /// UTC时间戳转本地时间
        /// </summary>
        /// <param name="UTCTicks">UTC时间戳,毫秒</param>
        /// <returns>本地时间</returns>
        public static DateTime UTCTicks2LocalTime(long UTCTicks)
        {
            return UTCTime2LocalTime(UTCTicks2UTCTime(UTCTicks));
        }

        /// <summary>
        /// 本地时间戳转UTC时间
        /// </summary>
        /// <param name="LocalTicks">本地时间戳,毫秒</param>
        /// <returns>UTC时间</returns>
        public static DateTime LocalTicks2UTCTime(long LocalTicks)
        {
            return LocalTime2UTCTime(LocalTicks2LocalTime(LocalTicks));
        }

        #endregion


    }

 

C# 时间戳与DateTime互转

标签:cal   col   rgba   returns   div   region   rsa   localtime   表示   

原文地址:https://www.cnblogs.com/v-dai/p/13719605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!