zoukankan      html  css  js  c++  java
  • C# 时间戳与DateTime互转,手动减计算

        /// <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
    
    
        }
  • 相关阅读:
    洛谷 P4071 [SDOI2016]排列计数
    问题 G: 【一本通提高同余问题】计算器
    问题 A: 【一本通提高组合数学】Bullcow 牡牛和牝牛
    浅谈卢卡斯定理(非扩展)
    2019西安联训B层 Day 6练习题 问题 C: 扩展欧几里得
    react使用lazy()和Suspense实现根据路由进行代码分割
    react-loadable 使用高阶组件动态import组件,实现代码分割(code-splitting)
    react angular vue流行度对比
    react 服务端渲染(ssr) 框架 Next.js
    超级字符串内class正则匹配替换 可以用于css modules
  • 原文地址:https://www.cnblogs.com/v-dai/p/13719605.html
Copyright © 2011-2022 走看看