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