public static string ElapsedTimeString(DateTime time, TimeStringType type = TimeStringType.Short) { int days = 0, hours = 0, minutes = 0, seconds = 0; if (TimeIsInThePast(time)) { TimeSpan elapsedTime = TimeSpan.FromSeconds(DateTime.UtcNow.Subtract(time).TotalSeconds); days = elapsedTime.Days; hours = elapsedTime.Hours; minutes = elapsedTime.Minutes; seconds = elapsedTime.Seconds; } return(GetTimeString(days, hours, minutes, seconds, type)); }
public static string RemainingTimeString(DateTime time, TimeStringType type = TimeStringType.Short) { int days = 0, hours = 0, minutes = 0, seconds = 0; if (TimeIsInTheFuture(time)) { TimeSpan remainingTime = TimeSpan.FromSeconds(time.Subtract(DateTime.UtcNow).TotalSeconds); days = remainingTime.Days; hours = remainingTime.Hours; minutes = remainingTime.Minutes; seconds = remainingTime.Seconds; } return(GetTimeString(days, hours, minutes, seconds, type)); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="theHours"></param> /// <param name="theMinutes"></param> /// <param name="theSeconds"></param> /// <param name="theEndAction">CD结束时回调</param> public AutoCountDown(Text theLabel, int theHours, int theMinutes, int theSeconds, Action theEndAction = null) { mText = theLabel; mCountingText = ""; mStopText = ""; mEndText = ""; mDays = 0; mHours = theHours; mMinutes = theMinutes; mSeconds = theSeconds; IsStillCountingDown = true; mEndAction = theEndAction; mTimeType = TimeStringType.UpToMinutes; mText.text = FormatTime(); EnumEventDispatcher.AddEventListener(EnumEventType.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="secondsNum">CD秒数</param> /// <param name="theCountingText"></param> /// <param name="theStopText"></param> /// <param name="theEndText"></param> /// <param name="theTimeStringType"></param> /// <param name="theEndAction">CD结束时回调</param> public AutoCountDown(Text theLabel, int secondsNum, string theCountingText, string theStopText, string theEndText, TimeStringType theTimeStringType, Action theEndAction = null) { mText = theLabel; mCountingText = theCountingText; mStopText = theStopText; mEndText = theEndText; mDays = secondsNum / SECONDS_DAY; mHours = secondsNum % SECONDS_DAY / SECONDS_HOUR; mMinutes = secondsNum % SECONDS_HOUR / SECONDS_MINUTE; mSeconds = secondsNum % SECONDS_MINUTE; IsStillCountingDown = true; mEndAction = theEndAction; mTimeType = theTimeStringType; mText.text = FormatTime(); EnumEventDispatcher.AddEventListener(EnumEventType.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="theHours"></param> /// <param name="theMinutes"></param> /// <param name="theSeconds"></param> /// <param name="theEndAction">CD结束时回调</param> public MogoCountDown(UILabel theLabel, int theHours, int theMinutes, int theSeconds, Action theEndAction = null) { label = theLabel; countingText = ""; stopText = ""; endText = ""; days = 0; hours = theHours; minutes = theMinutes; seconds = theSeconds; stillCountingDown = true; endAction = theEndAction; timeType = TimeStringType.UpToMinutes; label.text = FormatTime(); EventDispatcher.AddEventListener(Events.OtherEvent.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="secondsNum">CD秒数</param> /// <param name="theCountingText"></param> /// <param name="theStopText"></param> /// <param name="theEndText"></param> /// <param name="theTimeStringType"></param> /// <param name="theEndAction">CD结束时回调</param> public MogoCountDown(UILabel theLabel, int secondsNum, string theCountingText, string theStopText, string theEndText, TimeStringType theTimeStringType, Action theEndAction = null) { label = theLabel; countingText = theCountingText; stopText = theStopText; endText = theEndText; days = secondsNum / SECONDS_DAY; hours = secondsNum % SECONDS_DAY / SECONDS_HOUR; minutes = secondsNum % SECONDS_HOUR / SECONDS_MINUTE; seconds = secondsNum % SECONDS_MINUTE; stillCountingDown = true; endAction = theEndAction; timeType = theTimeStringType; label.text = FormatTime(); EventDispatcher.AddEventListener(Events.OtherEvent.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="theEndAction">CD结束时回调</param> public MogoCountDown(UILabel theLabel, Action theEndAction = null) { label = theLabel; countingText = ""; stopText = ""; endText = ""; days = 0; hours = 0; minutes = 0; seconds = 0; stillCountingDown = true; endAction = theEndAction; timeType = TimeStringType.UpToMinutes; label.text = FormatTime(); EventDispatcher.AddEventListener(Events.OtherEvent.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="secondsNum">CD秒数</param> /// <param name="theCountingText"></param> /// <param name="theStopText"></param> /// <param name="theEndText"></param> /// <param name="theTimeStringType"></param> /// <param name="theEndAction">CD结束时回调</param> public MogoCountDown(UILabel theLabel, int secondsNum, string theCountingText, string theStopText, string theEndText, TimeStringType theTimeStringType, Action theEndAction = null) { label = theLabel; countingText = theCountingText; stopText = theStopText; endText = theEndText; days = secondsNum / SECONDS_DAY; hours = secondsNum % SECONDS_DAY / SECONDS_HOUR; minutes = secondsNum % SECONDS_HOUR / SECONDS_MINUTE; seconds = secondsNum % SECONDS_MINUTE; stillCountingDown = true; endAction = theEndAction; timeType = theTimeStringType; label.text = FormatTime(); EventDispatcher.AddEventListener(Events.OtherEvent.SecondPast, CountDown); }
/// <summary> /// CD构造函数 /// </summary> /// <param name="theLabel"></param> /// <param name="theDays">天数</param> /// <param name="theHours">小时数</param> /// <param name="theMinutes">分钟数</param> /// <param name="theSeconds">描述</param> /// <param name="theCountingText"></param> /// <param name="theStopText"></param> /// <param name="theEndText"></param> /// <param name="theTimeStringType">显示类型</param> /// <param name="theEndAction">CD结束时回调</param> public MogoCountDown(UILabel theLabel, int theDays, int theHours, int theMinutes, int theSeconds, string theCountingText, string theStopText, string theEndText, TimeStringType theTimeStringType, Action theEndAction = null) { label = theLabel; countingText = theCountingText; stopText = theStopText; endText = theEndText; days = theDays; hours = theHours; minutes = theMinutes; seconds = theSeconds; stillCountingDown = true; endAction = theEndAction; timeType = theTimeStringType; label.text = FormatTime(); EventDispatcher.AddEventListener(Events.OtherEvent.SecondPast, CountDown); }
private static string GetTimeString(int days = 0, int hours = 0, int minutes = 0, int seconds = 0, TimeStringType type = TimeStringType.Short) { string result = ""; switch (type) { case TimeStringType.Short: if (days > 0) { result = ((days < 10) ? "0" + days.ToString() : days.ToString()) + "d " + ((hours < 10) ? "0" + hours.ToString() : hours.ToString()) + "h"; } else if (hours > 0) { result = ((hours < 10) ? "0" + hours.ToString() : hours.ToString()) + "h " + ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + "m"; } else if (minutes > 0) { result = ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + "m " + ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()) + "s"; } else { result = ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()) + "s"; } break; case TimeStringType.Long: if (days > 0) { result = ((days < 10) ? "0" + days.ToString() : days.ToString()) + "d " + ((hours < 10) ? "0" + hours.ToString() : hours.ToString()) + "h" + ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + "m"; } else if (hours > 0) { result = ((hours < 10) ? "0" + hours.ToString() : hours.ToString()) + "h " + ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + "m " + ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()) + "s"; } else if (minutes > 0) { result = ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + "m " + ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()) + "s"; } else { result = ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()) + "s"; } break; case TimeStringType.HoursMinutesSeconds: hours = (days > 0)?days * hours:hours; result = ((hours < 10) ? "0" + hours.ToString() : (hours).ToString()) + ":" + ((minutes < 10) ? "0" + minutes.ToString() : minutes.ToString()) + ":" + ((seconds < 10) ? "0" + seconds.ToString() : seconds.ToString()); break; } return(result); }