hch
8 天以前 cb653cf75b17b9bdca0b5b9e6b88edf1ca72e90c
Main/Utility/TimeUtility.cs
@@ -89,7 +89,7 @@
    public static readonly DateTime OriginalTime = new DateTime(1970, 1, 1, 8, 0, 0);
    public static readonly DateTime ClientOriginalTime = new DateTime(1, 1, 1, 0, 0, 0);
    /// <summary>
    /// 服务器时间相比起始时间的秒数(主要方便比较)
    /// 服务器时间相比起始时间的秒数(即服务器的时间戳)
    /// </summary>
    public static int AllSeconds
    {
@@ -172,62 +172,62 @@
    //     Debug.LogFormat("CreateRoleTime {0}  CreateDays {1}", createRoleTimeTail, CreateDays);
    // }
    public static event Action OnServerTimeRefresh;
    public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData)
    {
        var dateTime = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second);
        s_ServerTime = dateTime;
        _checkTime = Time.realtimeSinceStartup;
        if (OnServerTimeRefresh != null)
        {
            OnServerTimeRefresh();
        }
        s_CrossServerTime = Convert.ToDateTime(vNetData.CrossServerTime);
        _crossCheckTime = Time.realtimeSinceStartup;
        TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) =>
        {
            SyncServerTime();
        }, 60);
    public static event Action OnServerTimeRefresh;
    public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData)
    {
        var dateTime = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second);
        s_ServerTime = dateTime;
        _checkTime = Time.realtimeSinceStartup;
        if (OnServerTimeRefresh != null)
        {
            OnServerTimeRefresh();
        }
        s_CrossServerTime = Convert.ToDateTime(vNetData.CrossServerTime);
        _crossCheckTime = Time.realtimeSinceStartup;
        TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) =>
        {
            SyncServerTime();
        }, 60);
    }
    public static event Action OnServerOpenDayRefresh;
    public static void OnRefreshServerOpenDay(HA005_tagOpenServerDay package)
    {
        {
            OpenDay = package.Day;
            IsMixServer = package.IsMixServer == 1;
            MixOpenDay = package.MixDay;
            openServerDayOfWeek = package.OpenWeekday == 7 ? DayOfWeek.Sunday : (DayOfWeek)package.OpenWeekday;
            WeekOfYear = package.WeekOfYear;
        }
        OnRefreshServerTime(new HA004_tagServerDateTime()
        {
            Year = package.NowYear,
            Month = package.NowMonth,
            Day = package.NowDay,
            Hour = package.NowHour,
            Minute = package.NowMinute,
            Second = package.NowSecond,
            MicSecond = package.NowMicSecond,
            socketType = package.socketType,
        });
        if (OnServerOpenDayRefresh != null)
        {
            OnServerOpenDayRefresh();
        }
    }
    public static void SyncServerTime()
    {
        CA002_tagClientRequestServerTime pak = new CA002_tagClientRequestServerTime();
        GameNetSystem.Instance.SendInfo(pak);
    public static event Action OnServerOpenDayRefresh;
    public static void OnRefreshServerOpenDay(HA005_tagOpenServerDay package)
    {
        {
            OpenDay = package.Day;
            IsMixServer = package.IsMixServer == 1;
            MixOpenDay = package.MixDay;
            openServerDayOfWeek = package.OpenWeekday == 7 ? DayOfWeek.Sunday : (DayOfWeek)package.OpenWeekday;
            WeekOfYear = package.WeekOfYear;
        }
        OnRefreshServerTime(new HA004_tagServerDateTime()
        {
            Year = package.NowYear,
            Month = package.NowMonth,
            Day = package.NowDay,
            Hour = package.NowHour,
            Minute = package.NowMinute,
            Second = package.NowSecond,
            MicSecond = package.NowMicSecond,
            socketType = package.socketType,
        });
        if (OnServerOpenDayRefresh != null)
        {
            OnServerOpenDayRefresh();
        }
    }
    public static void SyncServerTime()
    {
        CA002_tagClientRequestServerTime pak = new CA002_tagClientRequestServerTime();
        GameNetSystem.Instance.SendInfo(pak);
    }
    /// <summary>
@@ -344,6 +344,49 @@
        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
    }
    //极简显示
    // x天x小时
    // x小时x分
    // x分
    // x秒
    public static string SecondsToShortDHMS(int _seconds)
    {
        int days = _seconds / 86400;
        int hours = _seconds % 86400 / 3600;
        int mins = _seconds % 3600 / 60;
        int seconds = _seconds % 60;
        if (days > 0)
        {
            return StringUtility.Contact(days, Language.Get("L1074"), hours, Language.Get("L1072"));
        }
        else if (hours > 0)
        {
            return StringUtility.Contact(hours, Language.Get("L1072"), mins, Language.Get("L1073"));
        }
        else if (mins > 0)
        {
            return StringUtility.Contact(mins, Language.Get("L1073"));
        }
        return StringUtility.Contact(seconds, Language.Get("L1075"));
    }
    //例子
    //大于24小时显示:x天xx小时xx分
    //小于24小时显示:xx:xx:xx
    public static string SecondsToDHMSEx(int _seconds)
    {
        int days = _seconds / 86400;
        int hours = _seconds % 86400 / 3600;
        int mins = _seconds % 3600 / 60;
        int seconds = _seconds % 60;
        if (days > 0)
        {
            return StringUtility.Contact(days, Language.Get("L1074"), hours.ToString("D2"), Language.Get("L1072"), mins.ToString("D2"), Language.Get("L1073"));
        }
        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
    }
    //例子
    //x天
    //x时
@@ -394,6 +437,16 @@
    }
    /// <summary>
    /// 获取当天的24点时间
    /// </summary>
    /// <returns></returns>
    public static DateTime GetTodayEndTime()
    {
        var now = ServerNow.AddDays(1);
        return new DateTime(now.Year, now.Month, now.Day);
    }
    /// <summary>
    /// 获取下一个凌晨5点的时间
    /// </summary>
    /// <returns></returns>
@@ -427,4 +480,10 @@
        return (ServerNow - startTime).Days;
    }
    //今日剩余秒数
    public static int GetTodayRemainSeconds()
    {
        return (int)(GetTodayEndTime() - ServerNow).TotalSeconds;
    }
}