| | |
| | | using System; |
| | | using System.Text; |
| | | using UnityEngine; |
| | | |
| | | public static class TimeUtility |
| | | { |
| | | private static DateTime _serverTime = DateTime.Now; |
| | | |
| | | private static float _checkTime = 0; |
| | | /// <summary> |
| | | /// 当前服务器时间 |
| | | /// </summary> |
| | | public static DateTime ServerNow { |
| | | get { |
| | | float tick = Time.realtimeSinceStartup - _checkTime; |
| | | DateTime real = _serverTime.AddSeconds(tick); |
| | | return real; |
| | | } |
| | | private set { _serverTime = value; } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 年份 |
| | | /// </summary> |
| | | public static int Year { |
| | | get { return ServerNow.Year; } |
| | | } |
| | | /// <summary> |
| | | /// 月份 |
| | | /// </summary> |
| | | public static int Month { |
| | | get { return ServerNow.Month; } |
| | | } |
| | | /// <summary> |
| | | /// 天 |
| | | /// </summary> |
| | | public static int Day { |
| | | get { return ServerNow.Day; } |
| | | } |
| | | /// <summary> |
| | | /// 小时 |
| | | /// </summary> |
| | | public static int Hour { |
| | | get { return ServerNow.Hour; } |
| | | } |
| | | /// <summary> |
| | | /// 分钟 |
| | | /// </summary> |
| | | public static int Minute { |
| | | get { return ServerNow.Minute; } |
| | | } |
| | | /// <summary> |
| | | /// 秒 |
| | | /// </summary> |
| | | public static int Second { |
| | | get { return ServerNow.Second; } |
| | | } |
| | | /// <summary> |
| | | /// 服务器起始时间 |
| | | /// </summary> |
| | | public static readonly DateTime OriginalTime = new DateTime(1970, 1, 1, 8, 0, 0); |
| | | public static readonly DateTime ClientOriginalTime = new DateTime(1, 1, 1, 12, 0, 0); |
| | | /// <summary> |
| | | /// 服务器时间相比起始时间的秒数(主要方便比较) |
| | | /// </summary> |
| | | public static int AllSeconds { |
| | | get { |
| | | TimeSpan t = ServerNow - OriginalTime; |
| | | return t.Seconds; |
| | | } |
| | | } |
| | | |
| | | public static int OpenDay { |
| | | get; private set; |
| | | } |
| | | |
| | | public static bool IsMixServer { |
| | | get; private set; |
| | | } |
| | | |
| | | public static int MixOpenDay { |
| | | get; private set; |
| | | } |
| | | |
| | | public static int OpenWeekCnt |
| | | { |
| | | get |
| | | { |
| | | var _openDay = ServerNow.AddDays(-OpenDay); |
| | | var _opendayOfWeek = _openDay.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)_openDay.DayOfWeek; |
| | | _openDay = _openDay.AddDays(7 - _opendayOfWeek + 1); |
| | | var _openTime = new DateTime(_openDay.Year, _openDay.Month, _openDay.Day, 0, 0, 0); |
| | | var _total = Mathf.Max(0, (float)ServerNow.Subtract(_openTime).TotalDays); |
| | | return Mathf.CeilToInt((float)_total / 7); |
| | | } |
| | | } |
| | | |
| | | static StringBuilder stringBuilder = new StringBuilder(); |
| | | |
| | | public static DateTime createRoleTime { get; private set; } |
| | | private static DateTime createRoleTimeTail = DateTime.Now; |
| | | public static int CreateDays |
| | | { |
| | | get |
| | | { |
| | | return Mathf.CeilToInt((float)(ServerNow - createRoleTimeTail).TotalDays); |
| | | } |
| | | } |
| | | |
| | | public static event Action OnCreateRoleTimeRefresh; |
| | | public static void OnRefreshCreateRoleTime(HA124_tagMCPlayerInfo _package) |
| | | { |
| | | createRoleTime = Convert.ToDateTime(UIHelper.GetTime(_package.CreateRoleTime)); |
| | | createRoleTimeTail = new DateTime(createRoleTime.Year, createRoleTime.Month, createRoleTime.Day); |
| | | if (OnCreateRoleTimeRefresh != null) |
| | | { |
| | | OnCreateRoleTimeRefresh(); |
| | | } |
| | | DesignDebug.LogFormat("CreateRoleTime {0} CreateDays {1}", createRoleTimeTail, CreateDays); |
| | | } |
| | | |
| | | public static event Action OnServerTimeRefresh; |
| | | public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData) |
| | | { |
| | | DateTime n = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second); |
| | | _serverTime = n; |
| | | DesignDebug.Log("OnRefreshServerTime月份:"+_serverTime.Month); |
| | | _checkTime = Time.realtimeSinceStartup; |
| | | if (OnServerTimeRefresh != null) OnServerTimeRefresh(); |
| | | 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; |
| | | if (OnServerOpenDayRefresh != null) { |
| | | OnServerOpenDayRefresh(); |
| | | } |
| | | } |
| | | |
| | | public static void SyncServerTime() |
| | | { |
| | | CA002_tagClientRequestServerTime pack = new CA002_tagClientRequestServerTime(); |
| | | GameNetSystem.Instance.SendInfo(pack); |
| | | } |
| | | /// <summary> |
| | | /// 根据服务器下发的秒数获取时间 |
| | | /// </summary> |
| | | /// <param name="seconds"></param> |
| | | /// <returns></returns> |
| | | public static DateTime GetTime(uint seconds) |
| | | { |
| | | DateTime d = OriginalTime.AddTicks(seconds * TimeSpan.TicksPerSecond); |
| | | return d; |
| | | } |
| | | |
| | | public static string SecondsToHMS(int _seconds) |
| | | { |
| | | int hours = _seconds / 3600; |
| | | int mins = _seconds % 3600 / 60; |
| | | int seconds = _seconds % 60; |
| | | return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2")); |
| | | } |
| | | |
| | | public static string SecondsToMS(int _seconds) |
| | | { |
| | | int mins = _seconds % 3600 / 60; |
| | | int seconds = _seconds % 60; |
| | | return StringUtility.Contact(mins.ToString("D2"), ":", seconds.ToString("D2")); |
| | | } |
| | | |
| | | public static string SecondsToDHMSCHS(int _seconds) |
| | | { |
| | | int days = _seconds / 86400; |
| | | int hours = _seconds % 86400 / 3600; |
| | | int mins = _seconds % 3600 / 60; |
| | | int seconds = _seconds % 60; |
| | | return StringUtility.Contact(days > 0 ? days.ToString() : string.Empty, |
| | | days > 0 ? Language.Get("L1074") : string.Empty, hours > 0 ? hours.ToString() : string.Empty, |
| | | hours > 0 ? Language.Get("Hour") : string.Empty, mins > 0 ? mins.ToString() : string.Empty, |
| | | mins > 0 ? Language.Get("Minute") : string.Empty, seconds > 0 ? seconds.ToString() : string.Empty, |
| | | seconds > 0 ? Language.Get("RealmWin_Bewrite_35") : string.Empty); |
| | | } |
| | | |
| | | public static string SecondsToTitleDHMS(int _seconds) |
| | | { |
| | | int days = _seconds / 86400; |
| | | if (days > 0) |
| | | { |
| | | return StringUtility.Contact(days, Language.Get("L1074")); |
| | | } |
| | | int hours = _seconds % 86400 / 3600; |
| | | if (hours > 0) |
| | | { |
| | | return StringUtility.Contact(hours, Language.Get("Hour")); |
| | | } |
| | | int mins = Mathf.CeilToInt(_seconds % 3600 / 60.0f); |
| | | if (mins > 0) |
| | | { |
| | | return StringUtility.Contact(mins, Language.Get("Minute")); |
| | | } |
| | | return StringUtility.Contact(1, Language.Get("Minute")); |
| | | } |
| | | |
| | | public static string SecondsToHMSCHSRetain(int _seconds, bool _hour = true, bool _min = true, bool _sec = true) |
| | | { |
| | | stringBuilder.Length = 0; |
| | | int hours = _seconds / 3600; |
| | | int mins = _seconds % 3600 / 60; |
| | | int seconds = _seconds % 60; |
| | | if (hours > 0 || _hour) |
| | | { |
| | | stringBuilder.Append(hours); |
| | | stringBuilder.Append(Language.Get("Hour")); |
| | | } |
| | | if (mins > 0 || _min) |
| | | { |
| | | stringBuilder.Append(mins); |
| | | stringBuilder.Append(Language.Get("Minute")); |
| | | } |
| | | if (seconds > 0 || _sec) |
| | | { |
| | | stringBuilder.Append(seconds); |
| | | stringBuilder.Append(Language.Get("RealmWin_Bewrite_35")); |
| | | } |
| | | return stringBuilder.ToString(); |
| | | } |
| | | |
| | | public static string SecondsToDHMS(int _seconds) |
| | | { |
| | | int days = _seconds / 86400; |
| | | int hours = _seconds % 86400 / 3600; |
| | | int mins = _seconds % 3600 / 60; |
| | | int seconds = _seconds % 60; |
| | | return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2")); |
| | | } |
| | | |
| | | public static string SecondsToConsumeRebate(int _seconds) |
| | | { |
| | | float days = (float)_seconds / 86400; |
| | | float hours = (float)_seconds % 86400 / 3600; |
| | | int mins = _seconds % 3600 / 60; |
| | | float seconds = (float)_seconds % 60; |
| | | if (days >= 1) |
| | | { |
| | | return StringUtility.Contact(Mathf.CeilToInt(days), Language.Get("L1074")); |
| | | } |
| | | else if (hours >= 1) |
| | | { |
| | | return StringUtility.Contact(Mathf.CeilToInt(hours), Language.Get("Hour")); |
| | | } |
| | | else if (mins >= 1) |
| | | { |
| | | return StringUtility.Contact(mins, Language.Get("Minute"), seconds, Language.Get("RealmWin_Bewrite_35")); |
| | | } |
| | | else |
| | | { |
| | | return StringUtility.Contact(seconds, Language.Get("RealmWin_Bewrite_35")); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | using System;
|
| | | using System.Text;
|
| | | using UnityEngine;
|
| | |
|
| | | public static class TimeUtility
|
| | | {
|
| | | private static DateTime _serverTime = DateTime.Now;
|
| | |
|
| | | private static float _checkTime = 0;
|
| | | /// <summary>
|
| | | /// 当前服务器时间
|
| | | /// </summary>
|
| | | public static DateTime ServerNow {
|
| | | get {
|
| | | float tick = Time.realtimeSinceStartup - _checkTime;
|
| | | DateTime real = _serverTime.AddSeconds(tick);
|
| | | return real;
|
| | | }
|
| | | private set { _serverTime = value; }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 年份
|
| | | /// </summary>
|
| | | public static int Year {
|
| | | get { return ServerNow.Year; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 月份
|
| | | /// </summary>
|
| | | public static int Month {
|
| | | get { return ServerNow.Month; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 天
|
| | | /// </summary>
|
| | | public static int Day {
|
| | | get { return ServerNow.Day; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 小时
|
| | | /// </summary>
|
| | | public static int Hour {
|
| | | get { return ServerNow.Hour; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 分钟
|
| | | /// </summary>
|
| | | public static int Minute {
|
| | | get { return ServerNow.Minute; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 秒
|
| | | /// </summary>
|
| | | public static int Second {
|
| | | get { return ServerNow.Second; }
|
| | | }
|
| | | /// <summary>
|
| | | /// 服务器起始时间
|
| | | /// </summary>
|
| | | public static readonly DateTime OriginalTime = new DateTime(1970, 1, 1, 8, 0, 0);
|
| | | public static readonly DateTime ClientOriginalTime = new DateTime(1, 1, 1, 12, 0, 0);
|
| | | /// <summary>
|
| | | /// 服务器时间相比起始时间的秒数(主要方便比较)
|
| | | /// </summary>
|
| | | public static int AllSeconds {
|
| | | get {
|
| | | TimeSpan t = ServerNow - OriginalTime;
|
| | | return t.Seconds;
|
| | | }
|
| | | }
|
| | |
|
| | | public static int OpenDay {
|
| | | get; private set;
|
| | | }
|
| | |
|
| | | public static bool IsMixServer {
|
| | | get; private set;
|
| | | }
|
| | |
|
| | | public static int MixOpenDay {
|
| | | get; private set;
|
| | | }
|
| | |
|
| | | public static int OpenWeekCnt
|
| | | {
|
| | | get
|
| | | {
|
| | | var _openDay = ServerNow.AddDays(-OpenDay);
|
| | | var _opendayOfWeek = _openDay.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)_openDay.DayOfWeek;
|
| | | _openDay = _openDay.AddDays(7 - _opendayOfWeek + 1);
|
| | | var _openTime = new DateTime(_openDay.Year, _openDay.Month, _openDay.Day, 0, 0, 0);
|
| | | var _total = Mathf.Max(0, (float)ServerNow.Subtract(_openTime).TotalDays);
|
| | | return Mathf.CeilToInt((float)_total / 7);
|
| | | }
|
| | | }
|
| | |
|
| | | static StringBuilder stringBuilder = new StringBuilder();
|
| | |
|
| | | public static DateTime createRoleTime { get; private set; }
|
| | | private static DateTime createRoleTimeTail = DateTime.Now;
|
| | | public static int CreateDays
|
| | | {
|
| | | get
|
| | | {
|
| | | return Mathf.CeilToInt((float)(ServerNow - createRoleTimeTail).TotalDays);
|
| | | }
|
| | | }
|
| | |
|
| | | public static event Action OnCreateRoleTimeRefresh;
|
| | | public static void OnRefreshCreateRoleTime(HA124_tagMCPlayerInfo _package)
|
| | | {
|
| | | createRoleTime = Convert.ToDateTime(UIHelper.GetTime(_package.CreateRoleTime));
|
| | | createRoleTimeTail = new DateTime(createRoleTime.Year, createRoleTime.Month, createRoleTime.Day);
|
| | | if (OnCreateRoleTimeRefresh != null)
|
| | | {
|
| | | OnCreateRoleTimeRefresh();
|
| | | }
|
| | | DebugEx.LogFormat("CreateRoleTime {0} CreateDays {1}", createRoleTimeTail, CreateDays);
|
| | | }
|
| | |
|
| | | public static event Action OnServerTimeRefresh;
|
| | | public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData)
|
| | | {
|
| | | DateTime n = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second);
|
| | | _serverTime = n;
|
| | | DebugEx.Log("OnRefreshServerTime月份:"+_serverTime.Month);
|
| | | _checkTime = Time.realtimeSinceStartup;
|
| | | if (OnServerTimeRefresh != null) OnServerTimeRefresh();
|
| | | 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;
|
| | | if (OnServerOpenDayRefresh != null) {
|
| | | OnServerOpenDayRefresh();
|
| | | }
|
| | | }
|
| | |
|
| | | public static void SyncServerTime()
|
| | | {
|
| | | CA002_tagClientRequestServerTime pack = new CA002_tagClientRequestServerTime();
|
| | | GameNetSystem.Instance.SendInfo(pack);
|
| | | }
|
| | | /// <summary>
|
| | | /// 根据服务器下发的秒数获取时间
|
| | | /// </summary>
|
| | | /// <param name="seconds"></param>
|
| | | /// <returns></returns>
|
| | | public static DateTime GetTime(uint seconds)
|
| | | {
|
| | | DateTime d = OriginalTime.AddTicks(seconds * TimeSpan.TicksPerSecond);
|
| | | return d;
|
| | | }
|
| | |
|
| | | public static string SecondsToHMS(int _seconds)
|
| | | {
|
| | | int hours = _seconds / 3600;
|
| | | int mins = _seconds % 3600 / 60;
|
| | | int seconds = _seconds % 60;
|
| | | return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
|
| | | }
|
| | |
|
| | | public static string SecondsToMS(int _seconds)
|
| | | {
|
| | | int mins = _seconds % 3600 / 60;
|
| | | int seconds = _seconds % 60;
|
| | | return StringUtility.Contact(mins.ToString("D2"), ":", seconds.ToString("D2"));
|
| | | }
|
| | |
|
| | | public static string SecondsToDHMSCHS(int _seconds)
|
| | | {
|
| | | int days = _seconds / 86400;
|
| | | int hours = _seconds % 86400 / 3600;
|
| | | int mins = _seconds % 3600 / 60;
|
| | | int seconds = _seconds % 60;
|
| | | return StringUtility.Contact(days > 0 ? days.ToString() : string.Empty,
|
| | | days > 0 ? Language.Get("L1074") : string.Empty, hours > 0 ? hours.ToString() : string.Empty,
|
| | | hours > 0 ? Language.Get("Hour") : string.Empty, mins > 0 ? mins.ToString() : string.Empty,
|
| | | mins > 0 ? Language.Get("Minute") : string.Empty, seconds > 0 ? seconds.ToString() : string.Empty,
|
| | | seconds > 0 ? Language.Get("RealmWin_Bewrite_35") : string.Empty);
|
| | | }
|
| | |
|
| | | public static string SecondsToTitleDHMS(int _seconds)
|
| | | {
|
| | | int days = _seconds / 86400;
|
| | | if (days > 0)
|
| | | {
|
| | | return StringUtility.Contact(days, Language.Get("L1074"));
|
| | | }
|
| | | int hours = _seconds % 86400 / 3600;
|
| | | if (hours > 0)
|
| | | {
|
| | | return StringUtility.Contact(hours, Language.Get("Hour"));
|
| | | }
|
| | | int mins = Mathf.CeilToInt(_seconds % 3600 / 60.0f);
|
| | | if (mins > 0)
|
| | | {
|
| | | return StringUtility.Contact(mins, Language.Get("Minute"));
|
| | | }
|
| | | return StringUtility.Contact(1, Language.Get("Minute"));
|
| | | }
|
| | |
|
| | | public static string SecondsToHMSCHSRetain(int _seconds, bool _hour = true, bool _min = true, bool _sec = true)
|
| | | {
|
| | | stringBuilder.Length = 0;
|
| | | int hours = _seconds / 3600;
|
| | | int mins = _seconds % 3600 / 60;
|
| | | int seconds = _seconds % 60;
|
| | | if (hours > 0 || _hour)
|
| | | {
|
| | | stringBuilder.Append(hours);
|
| | | stringBuilder.Append(Language.Get("Hour"));
|
| | | }
|
| | | if (mins > 0 || _min)
|
| | | {
|
| | | stringBuilder.Append(mins);
|
| | | stringBuilder.Append(Language.Get("Minute"));
|
| | | }
|
| | | if (seconds > 0 || _sec)
|
| | | {
|
| | | stringBuilder.Append(seconds);
|
| | | stringBuilder.Append(Language.Get("RealmWin_Bewrite_35"));
|
| | | }
|
| | | return stringBuilder.ToString();
|
| | | }
|
| | |
|
| | | public static string SecondsToDHMS(int _seconds)
|
| | | {
|
| | | int days = _seconds / 86400;
|
| | | int hours = _seconds % 86400 / 3600;
|
| | | int mins = _seconds % 3600 / 60;
|
| | | int seconds = _seconds % 60;
|
| | | return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
|
| | | }
|
| | |
|
| | | public static string SecondsToConsumeRebate(int _seconds)
|
| | | {
|
| | | float days = (float)_seconds / 86400;
|
| | | float hours = (float)_seconds % 86400 / 3600;
|
| | | int mins = _seconds % 3600 / 60;
|
| | | float seconds = (float)_seconds % 60;
|
| | | if (days >= 1)
|
| | | {
|
| | | return StringUtility.Contact(Mathf.CeilToInt(days), Language.Get("L1074"));
|
| | | }
|
| | | else if (hours >= 1)
|
| | | {
|
| | | return StringUtility.Contact(Mathf.CeilToInt(hours), Language.Get("Hour"));
|
| | | }
|
| | | else if (mins >= 1)
|
| | | {
|
| | | return StringUtility.Contact(mins, Language.Get("Minute"), seconds, Language.Get("RealmWin_Bewrite_35"));
|
| | | }
|
| | | else
|
| | | {
|
| | | return StringUtility.Contact(seconds, Language.Get("RealmWin_Bewrite_35"));
|
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | }
|