| | |
| | | } |
| | | } |
| | | |
| | | ////A0 04 同步客户端时间 #tagServerDateTime 中的 CrossServerTime 为玩家在子服中收到的跨服时间 |
| | | //CrossServerNow为玩家登录在跨服服务器里的通知时间, 与ILTimeUtility.ServerCrossNow(玩家在子服收到跨服的时间通知)不同 |
| | | //A0 04 同步客户端时间 #tagServerDateTime 中的 CrossServerTime 为玩家在子服中收到的跨服时间 |
| | | static DateTime s_CrossServerTime = DateTime.Now; |
| | | static float _crossCheckTime = 0; |
| | | public static DateTime CrossServerNow |
| | |
| | | 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 |
| | | { |
| | |
| | | public static event Action OnCreateRoleTimeRefresh; |
| | | // public static void OnRefreshCreateRoleTime(HA124_tagMCPlayerInfo _package) |
| | | // { |
| | | // if (_package.socketType == ServerType.CrossSever) |
| | | // { |
| | | // return; |
| | | // } |
| | | |
| | | |
| | | // createRoleTime = Convert.ToDateTime(UIHelper.GetTime(_package.CreateRoleTime)); |
| | | // createRoleTimeTail = new DateTime(createRoleTime.Year, createRoleTime.Month, createRoleTime.Day); |
| | |
| | | // } |
| | | |
| | | 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); |
| | | // if (vNetData.socketType == ServerType.CrossSever) |
| | | // { |
| | | // s_CrossServerTime = dateTime; |
| | | // _crossCheckTime = Time.realtimeSinceStartup; |
| | | // } |
| | | // else |
| | | // { |
| | | // s_ServerTime = dateTime; |
| | | // _checkTime = Time.realtimeSinceStartup; |
| | | // if (OnServerTimeRefresh != null) |
| | | // { |
| | | // OnServerTimeRefresh(); |
| | | // } |
| | | // } |
| | | public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData) |
| | | { |
| | | var dateTime = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second); |
| | | |
| | | // TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) => |
| | | // { |
| | | // SyncServerTime(); |
| | | // }, 60); |
| | | // } |
| | | 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) |
| | | // { |
| | | // if (package.socketType != ServerType.CrossSever) |
| | | // { |
| | | // OpenDay = package.Day; |
| | | // IsMixServer = package.IsMixServer == 1; |
| | | // MixOpenDay = package.MixDay; |
| | | // openServerDayOfWeek = package.OpenWeekday == 7 ? DayOfWeek.Sunday : (DayOfWeek)package.OpenWeekday; |
| | | // WeekOfYear = package.WeekOfYear; |
| | | // } |
| | | 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, |
| | | // }); |
| | | 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 (package.socketType != ServerType.CrossSever |
| | | // && OnServerOpenDayRefresh != null) |
| | | // { |
| | | // OnServerOpenDayRefresh(); |
| | | // } |
| | | // } |
| | | if (OnServerOpenDayRefresh != null) |
| | | { |
| | | OnServerOpenDayRefresh(); |
| | | } |
| | | } |
| | | |
| | | // public static void SyncServerTime() |
| | | // { |
| | | // CA002_tagClientRequestServerTime pak = new CA002_tagClientRequestServerTime(); |
| | | // GameNetSystem.Instance.SendInfo(pak); |
| | | // if (GameNetSystem.Instance.crossServerSocketConnected) |
| | | // { |
| | | // GameNetSystem.Instance.SendToCrossServer(pak); |
| | | // } |
| | | // } |
| | | public static void SyncServerTime() |
| | | { |
| | | CA002_tagClientRequestServerTime pak = new CA002_tagClientRequestServerTime(); |
| | | GameNetSystem.Instance.SendInfo(pak); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据服务器下发的秒数获取时间 |
| | | /// </summary> |
| | |
| | | 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时 |
| | |
| | | } |
| | | |
| | | /// <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> |
| | |
| | | |
| | | return (ServerNow - startTime).Days; |
| | | } |
| | | |
| | | //今日剩余秒数 |
| | | public static int GetTodayRemainSeconds() |
| | | { |
| | | return (int)(GetTodayEndTime() - ServerNow).TotalSeconds; |
| | | } |
| | | } |