代码改变世界

c# 系统校时工具类

2016-09-14 09:52  newbirth  阅读(597)  评论(0编辑  收藏  举报
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HuaTong.General.Utility
{
    /// <summary>
    /// 系统校时工具类
    /// </summary>
    public static class SysDateTime
    {
        //时间差值标识
        private static TimeSpan TimeTick = new TimeSpan(0);
        //默认起始时间
        public readonly static DateTime StartTime = new DateTime(1970, 1, 1);
        //默认最小时间
        public readonly static DateTime MinDatetime = new DateTime(1900, 1, 1);

        /// <summary>
        /// 按UTC时间设置时间差值
        /// </summary>
        public static void CorrectingTimeUTC(long timestamp)
        {
            TimeTick = StartTime.AddMilliseconds(timestamp) - DateTime.UtcNow;
        }

        /// <summary>
        /// 按本地时间设置时间差值
        /// </summary>
        public static void CorrectingTime(long timestamp)
        {
            TimeTick = StartTime.AddMilliseconds(timestamp) - DateTime.Now;
        }

        /// <summary>
        /// 返回UTC时间戳
        /// </summary>
        public static long UtcTimestamp
        {
            get
            {
                TimeSpan ts = UtcNow - StartTime;
                return (long)ts.TotalMilliseconds;
            }
        }

        /// <summary>
        /// 返回本地时间戳
        /// </summary>
        public static long LocalTimestamp
        {
            get
            {
                TimeSpan ts = LocalNow - StartTime;
                return (long)ts.TotalMilliseconds;
            }
        }

        /// <summary>
        /// 返回本地时间
        /// </summary>
        public static DateTime LocalNow
        {
            get
            {
                return DateTime.Now + TimeTick;
            }
        }

        /// <summary>
        /// 返回UTC时间
        /// </summary>
        public static DateTime UtcNow
        {
            get { return DateTime.UtcNow + TimeTick; }
        }

        /// <summary>  
        /// 时间戳转为DateTime  
        /// </summary>
        public static DateTime GetDateTime(long timeStamp)
        {
            return StartTime.AddMilliseconds(timeStamp);
        }
    }
}