|  |  | 
 |  |  |     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 | 
 |  |  |     { | 
 |  |  | 
 |  |  |     //     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> | 
 |  |  | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  | } |